有人知道无锁常用数据类型的实现(意思是源代码)的好资源吗?我在考虑列表、队列等?
锁定实现非常容易找到,但我找不到无锁算法的示例以及 CAS 如何准确工作以及如何使用它来实现这些结构。
有人知道无锁常用数据类型的实现(意思是源代码)的好资源吗?我在考虑列表、队列等?
锁定实现非常容易找到,但我找不到无锁算法的示例以及 CAS 如何准确工作以及如何使用它来实现这些结构。
查看 Julian M Bucknall 的博客。他(详细)描述了队列、列表、堆栈等的无锁实现。
写在 C 中。
如果 C++ 适合您,请查看boost::lockfree。它具有无锁队列、堆栈和环缓冲区实现。
在本boost::lockfree::details
节中,您将找到一个无锁空闲列表和标记指针(ABA 预防)实现。您还将看到通过boost::atomic(C++0x 的开发中版本std::atomic
)进行显式内存排序的示例。
两者boost::lockfree
都boost::atomic
还不是其中的一部分boost
,但两者都受到了 boost-development 邮件列表的关注,并且都在进行审查。