9

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

4

4 回答 4

9

请参阅剑桥大学的实用无锁数据结构

于 2011-07-04T14:33:06.640 回答
6

我已经编写了自己的Rig 目前队列、堆栈和列表都在那里,哈希表很快就会出现。虽然我还在研究它,但它是供公众使用的,并且 API 大多是稳定的,只需使用 SVN 主干即可。:)

我知道的 C 中唯一的其他此类库是liblfds,尽管我从未使用过它。

于 2011-07-05T13:52:19.783 回答
6

liblfds

http://www.liblfds.org

带有完整 API 文档的 Wiki、问题论坛、阅读作者喋喋不休的博客 :-)

独立于平台。开箱即用,适用于 Windows、Linux、Intel 和 ARM。

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

此外,没有许可证 - 您可以根据需要使用代码。挣钱!这不是 GPL。

于 2011-07-05T14:50:39.957 回答
1

我目前正在编写一个无锁库,但它是 C++。这是一个类似 STL 的无锁双向链表

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

有关双向链表的更多信息,请查看对相关问题的回答。

于 2011-07-06T20:37:28.053 回答