旋转锁,它们有多有用?

您发现自己在代码中实际使用自旋锁的频率有多高?遇到使用忙循环实际上比使用锁更有效的情况有多普遍?
就个人而言,当我编写某种需要线程安全性的代码时,我倾向于使用不同的同步原语对其进行基准测试,就目前而言,使用锁似乎比使用旋转锁提供更好的性能。无论我实际持有锁的时间有多短,使用自旋锁时收到的争用量都远远大于使用锁时得到的争用量(当然,我在多处理器机器上运行测试)

我意识到在“低级”代码中更可能遇到自旋锁,但我想知道您是否发现它在更高级的编程中有用

这取决于你在做什么。在一般的应用程序代码中,您需要避免旋转锁

在低级别的东西中,您只需要为几个指令持有锁,并且延迟很重要,自旋锁是比锁更好的解决方案。但这种情况很少见,尤其是在通常使用C#的应用程序中

发表评论