We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
std::atomic_flag
1 parent acda8c6 commit 7877d0eCopy full SHA for 7877d0e
1 file changed
md/05内存模型与原子操作.md
@@ -275,6 +275,12 @@ bool r = f.test_and_set();
275
276
有限的特性使得 `std::atomic_flag` 非常适合用作制作**自旋锁**。
277
278
+> 自旋锁可以理解为一种***忙等锁***,因为它在等待锁的过程中不会主动放弃 CPU,而是持续检查锁的状态。
279
+>
280
+> 与此相对,`std::mutex` 互斥量是一种***睡眠锁***。当线程请求锁(`lock()`)而未能获取时,它会放弃 CPU 时间片,让其他线程得以执行,从而有效利用系统资源。
281
282
+> 从性能上看,自旋锁的响应更快,但是睡眠锁更加节省资源,高效。
283
+
284
```cpp
285
class spinlock_mutex {
286
std::atomic_flag flag{};
0 commit comments