pub struct SpinLock<T> {
raw_lock: RawSpinLock,
data: UnsafeCell<T>,
}Expand description
提供对数据的互斥访问的自旋锁结构体。 内部包含一个 RawSpinLock 和一个 UnsafeCell 用于存储数据。 使用示例:
ⓘ
let lock = SpinLock::new(0);
{
let mut guard = lock.lock(); // 获取锁
*guard += 1; // 访问和修改数据
} // 离开作用域,自动释放锁注意:SpinLock 不是可重入的。 当持有锁时,尝试再次获取锁将导致死锁。 确保在同一线程中不会嵌套调用 SpinLock::lock()。 此外,SpinLock 通过禁用中断来保护临界区,因此在持有锁时应避免长时间运行的操作,以防止影响系统响应性。
Fields§
§raw_lock: RawSpinLock§data: UnsafeCell<T>