Files
XCEngine/docs/api/XCEngine/Threading/SpinLock/SpinLock.md

1.2 KiB

SpinLock

命名空间: XCEngine::Threading

类型: class

头文件: XCEngine/Threading/SpinLock.h

描述: 基于 std::atomic_flag 的轻量自旋锁。

概述

SpinLockMutex 的主要区别不在 API 形状,而在等待策略:

  • Mutex 依赖 OS 互斥量阻塞等待。
  • SpinLock 在失败时会一直忙等,不让出 CPU。

这类锁通常只适合非常短的临界区,例如极小的元数据更新。商业引擎会保留它,是因为在高频、超短持锁窗口下,系统 mutex 的调度成本可能反而更高。

当前实现边界

  • 失败时是空循环忙等,没有回退、没有 Yield()、没有 pause 指令。
  • 没有公平性保证。
  • 不是递归锁;同一线程重复进入会自旋死锁。
  • Mutex 一样,同时提供了标准 Lockable 风格小写别名。

公开方法

方法 说明
Lock 阻塞自旋直到获得锁;同页也说明 lock() 别名。
Unlock 释放锁;同页也说明 unlock() 别名。
TryLock 尝试获得锁;同页也说明 try_lock() 别名。

相关文档