有人知道无锁通常数据类型的实现(意思是源代码)的良好资源。我在考虑列表,队列等等?
锁定实现非常容易找到,但我找不到无锁算法的例子,以及如何确切地使用CAS以及如何使用它来实现这些结构。
答案 0 :(得分:4)
查看Julian M Bucknall的博客。他(详细地)描述了队列,列表,堆栈等的无锁实现。
答案 1 :(得分:2)
用C编写。
答案 2 :(得分:2)
如果C ++对您没问题,请查看boost::lockfree。它具有无锁的Queue,Stack和Ringbuffer实现。
在boost::lockfree::details
部分,您将找到无锁空闲列表和标记指针(ABA预防)实现。您还将看到通过boost::atomic(C ++ 0x std::atomic
的开发中版本)显式内存排序的示例。
boost::lockfree
和boost::atomic
都不属于boost
的一部分,但两者都受到了推广开发邮件列表的关注,并且正在按计划进行审核。