是否有一个库实现了用C编写的无锁算法(队列,链表和其他)(不是用C ++编写的)?我看过一些像英特尔这样的库,但是我想使用通用库,至少比英特尔库更通用。
答案 0 :(得分:9)
答案 1 :(得分:6)
liblfds
Wiki提供完整的API文档,问题论坛,阅读作者的博客: - )
平台独立。开箱即用的Windows,Linux,Intel和ARM。
第7版应在一两个月内发布。将添加运行时缓存行对齐,退避和SMR。 (SMR还提供了大量其他CPU类型 - 基本上,任何支持原子操作的GCC编译,例如SPARC,MIPS,IA64等)。
此外,没有许可证 - 您可以随意使用代码。挣钱!这不是GPL。
答案 2 :(得分:5)
我写过my own,Rig,当前有队列,堆栈和列表,哈希表很快就会出现。虽然我还在努力,但它主要用于公共消费,而且API基本上是稳定的,只需使用SVN中继即可。 :)
我所知道的C中唯一的另一个这样的库是liblfds,虽然我从未使用它。
答案 3 :(得分:1)
我目前正在编写一个无锁的lib,但它是C ++。这是类似STL的Lock-Free Doubly-Linked List。
它使用的内存管理器非常强大(没有ABA问题的32位CAS)所以我用它来创建一套完整的容器:一个无锁的地图/集(使用跳过列表),一个锁 - 免费包(而不是队列/堆栈),以及无锁无序映射(使用拆分排序列表的哈希表)。
有关双向链接列表的详细信息,请查看my answer相关问题。