pub struct RawSpinLock {
lock: AtomicBool,
}Expand description
自旋锁结构体,提供互斥访问临界区的能力。 基于原子操作实现自旋锁机制,结合 IntrGuard 实现中断保护。 不可重入 (即不能嵌套调用 RawSpinLock::lock())。 使用示例:
ⓘ
let lock = RawSpinLock::new();
{
let guard = lock.lock(); // 获取锁,禁用中断
// 临界区代码
} // 离开作用域,自动释放锁并恢复中断状态Fields§
§lock: AtomicBoolImplementations§
Source§impl RawSpinLock
impl RawSpinLock
pub const fn new() -> Self
Sourcepub fn lock(&self) -> RawSpinLockGuard<'_>
pub fn lock(&self) -> RawSpinLockGuard<'_>
尝试获取自旋锁,并返回一个 RAII 保护器。
内部原子地获取锁,并在当前 CPU 禁用本地中断。
Sourcepub fn try_lock(&self) -> Option<RawSpinLockGuard<'_>>
pub fn try_lock(&self) -> Option<RawSpinLockGuard<'_>>
尝试获取自旋锁,如果成功则返回 RAII 保护器,否则返回 None。
内部原子地尝试获取锁,并在当前 CPU 禁用本地中断。 如果获取失败,会立即恢复中断状态(通过 Drop IntrGuard)。