【发布时间】:2011-04-15 18:28:42
【问题描述】:
Raymond Chen一直在做hugeseriesonlockfreealgorithms。除了InterlockedXxx 函数的简单案例之外,所有这些函数的流行模式似乎是它们实现自己的锁。当然,没有处理器锁,但在每个 CPU 上反复循环以确保一致性的概念非常类似于自旋锁。作为自旋锁,它们的效率将低于操作系统附带的通用锁,因为它们在等待其他线程时不会产生对它们的量子的控制。因此,每当有人来找我说“但我的算法是无锁的”时,我的一般反应是“所以”?p>
我很好奇 - 是否有 基准 可以显示无锁算法比全锁算法具有优势?
【问题讨论】:
-
我只在Joe Duffy's Concurrency 的书中看到了一些关于这个主题的图表,但并不详尽。另请参阅他的博客 bluebytesoftware 了解更多文章。
-
基准测试:liblfds.org/wordpress/?p=89(请注意,现在添加了指数退避,freelist 可以更好地扩展;后来的基准测试显示两个线程的扩展为 0.4,我还不确定退避延迟期是否最佳)。
标签: multithreading synchronization lock-free