无锁算法库

use*_*324 9 c algorithm lock-free

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

Dou*_*rie 9

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

  • 我发现这个库的代码难以理解.还没有文档.它不是生产用的.它几乎没有可读性:-) (3认同)

小智 6

liblfds

http://www.liblfds.org

维基有完整的API文档,论坛问题,博客阅读作者拨浪鼓:-)

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

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

此外,没有许可证 - 您可以使用您想要的代码.挣钱!这不是GPL.


llo*_*ngi 5

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

我所知道的C中唯一的另一个这样的库是liblfds,尽管我从未使用它.

  • 我也不会因为我可以,我曾经简单地考虑过而忽略了这些可能的主张,并得出结论,删除位(使用未使用的ptr位作为信息)显然是现有技术无效的(参见Wikipedia Tagged_pointer和LISP机器,这已经在90年代完成了,我甚至不确定该专利是否存在.对于SMR来说,有专利申请,这不是专利,即便如此,它也不会简单地停止使用它,直到在法庭上得到适当证明甚至阻止,看到所有Apple,IBM,HTC,......泥战和所有废话专利. (3认同)
  • 以下几点:1)我发布自己的代码或其他库的许可证与所述代码实施的技术上的可能专利无关.2)有趣的美国软件专利,与我和世界:〜零;)3)我甚至不确定这些专利是否存在,如果它们存在,如果它们有任何相关性:使用ptr的未使用位来存储信息是许多情况下广泛使用的技术,那里肯定是先前的艺术,而不是哈里斯2001年的论文.SMR也是一种专门的GC(论文本身也是如此),IBM也支持它,它们是开源友好的. (2认同)
  • IANAL,但恕我直言,许可证是特定于代码,并定义其使用和限制,专利略有不同.欧盟不承认软件专利达到美国的水平,所以仅仅因为一家大公司提交申请,并不意味着它们会被接受.对于SMR,我只找到了专利申请.就个人而言,你是我遇到的第一个开源开发者,特别担心这个问题,我绝对不想欺骗任何人(我有点怨恨这种指责),对我而言,在我的文化/社交环境中,我们不要关心这一切. (2认同)