无锁算法库

时间:2011-07-04 14:21:53

标签: c algorithm lock-free

是否有一个库实现了用C编写的无锁算法(队列,链表和其他)(不是用C ++编写的)?我看过一些像英特尔这样的库,但是我想使用通用库,至少比英特尔库更通用。

4 个答案:

答案 0 :(得分:9)

请参阅剑桥大学的Practical lock-free data structures

答案 1 :(得分:6)

liblfds

http://www.liblfds.org

Wiki提供完整的API文档,问题论坛,阅读作者的博客: - )

平台独立。开箱即用的Windows,Linux,Intel和ARM。

第7版应在一两个月内发布。将添加运行时缓存行对齐,退避和SMR。 (SMR还提供了大量其他CPU类型 - 基本上,任何支持原子操作的GCC编译,例如SPARC,MIPS,IA64等)。

此外,没有许可证 - 您可以随意使用代码。挣钱!这不是GPL。

答案 2 :(得分:5)

我写过my ownRig,当前有队列,堆栈和列表,哈希表很快就会出现。虽然我还在努力,但它主要用于公共消费,而且API基本上是稳定的,只需使用SVN中继即可。 :)

我所知道的C中唯一的另一个这样的库是liblfds,虽然我从未使用它。

答案 3 :(得分:1)

我目前正在编写一个无锁的lib,但它是C ++。这是类似STL的Lock-Free Doubly-Linked List

它使用的内存管理器非常强大(没有ABA问题的32位CAS)所以我用它来创建一套完整的容器:一个无锁的地图/集(使用跳过列表),一个锁 - 免费包(而不是队列/堆栈),以及无锁无序映射(使用拆分排序列表的哈希表)。

有关双向链接列表的详细信息,请查看my answer相关问题。