cpu - 什么时候使用自旋锁是个好主意?

标签 cpu mutex spinlock locks

似乎自旋锁并没有那么好,因为它们在等待(阻塞)时会浪费 CPU 周期。 如果线程在等待信号唤醒时只是进入休眠状态,那么 CPU 周期在自旋时不会丢失。

如果锁的持有时间很短,也许使用自旋锁会更好,那么它使用的时间可能会更少?如果这是真的,为什么?

最佳答案

是的,没错。

因为上下文切换很昂贵。操作系统和 CPU 必须做(相对)大量的工作来执行上下文切换。相反,旋转几个周期会便宜很多,即使这些周期在理论上是浪费的。

关于cpu - 什么时候使用自旋锁是个好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5024914/

相关文章:

compiler-construction - 编译器级别的分支预测

java - 如何在 Java 中使用 wait() 和 notify()?

objective-c - pthread_mutex_t VS @synchronized block ?

自旋锁 vs 忙等待

c++ - std::pow 的性能 - 缓存未命中?

PBS 中给定 shell 的 Linux echo cpu(核心)名称/编号

bash - 为进程分配 cpu 核心 - Linux

c++ - 我可以在多线程情况下使用不带锁的char变量吗

c++ - 可以将自旋锁与 O(1) 非内存连续代码一起使用吗?

linux - read_lock和write_lock的优点