# SpinLock **命名空间**: `XCEngine::Threading` **类型**: `class` **头文件**: `XCEngine/Threading/SpinLock.h` **描述**: 自旋锁封装类,使用原子操作实现,适用于保护极短的临界区。 ## 概述 `SpinLock` 是一个轻量级的自旋锁实现,使用 `std::atomic_flag` 的 test-and-set 操作。它在获取锁失败时不断轮询,不会导致线程切换,非常适合保护非常短的临界区(如简单的计数器递增)。 ## 公共方法 | 方法 | 描述 | |------|------| | [`Lock`](lock.md) | 获取锁(忙等待) | | [`Unlock`](unlock.md) | 释放锁 | | [`TryLock`](trylock.md) | 尝试获取锁(非阻塞) | ## STL 兼容方法 支持 `lock()`, `unlock()`, `try_lock()` 以兼容 STL 的 lockable 概念。**注意**:这些方法为非 `const` 成员函数。 ## 使用示例 ```cpp Threading::SpinLock spinLock; int counter = 0; // 保护极短的临界区 void FastIncrement() { spinLock.Lock(); ++counter; spinLock.Unlock(); } // TryLock 用法 void SafeIncrement() { if (spinLock.TryLock()) { ++counter; spinLock.Unlock(); } } ``` ## 相关文档 - [Mutex](../mutex/mutex.md) - 互斥锁 - [ReadWriteLock](../readwritelock/readwritelock.md) - 读写锁 - [../threading/threading.md](../threading.md) - 模块总览