是否有一个库实现用C编写的无锁算法(队列,链表和其他)(不是用C++)?我看过像英特尔这样的库,但是我想使用通用库,至少比英特尔库更通用.
我正在根据这些论文编写一个无锁双向链表:
\n\n“基于引用计数的高效可靠的无锁内存回收”\nAnders Gidenstam,IEEE 成员,Marina Papatriantafilou,H\xcb\x9a akan Sundell 和 Philippas Tsigas
\n\n“无锁双端队列和双向链表”\nH\xc3\xa5kan Sundell,Philippas Tsigas
\n\n对于这个问题我们可以先搁置第一篇论文。
\n\n在本文中,他们使用了一种巧妙的方法来在单词中存储删除标志和指针。\n(更多信息请参见此处)
\n\n论文中这部分的伪代码:
\n\nunion Link\n : word\n (p,d): {pointer to Node, boolean} \n\nstructure Node\n value: pointer to word\n prev: union Link\n next: union Link\nRun Code Online (Sandbox Code Playgroud)\n\n我的上述伪代码的代码:
\n\ntemplate< typename NodeT >\nstruct LockFreeLink\n{\npublic:\n typedef NodeT NodeType;\n\nprivate:\n\nprotected:\n std::atomic< NodeT* > mPointer;\n\npublic:\n bcLockFreeLink()\n {\n std::atomic_init(&mPointer, nullptr);\n }\n ~bcLockFreeLink() {}\n\n inline NodeType* getNode() const throw()\n {\n return std::atomic_load(&mPointer, std::memory_order_relaxed);\n }\n inline std::atomic< NodeT* …Run Code Online (Sandbox Code Playgroud) 对于我正在编写的应用程序,我需要上面的数据结构.我想知道是否有一个库已经实现了它,或者我是否必须自己编写它?
如果没有必要,我真的不想重新发明轮子.
我需要这种结构能够使用多个线程添加和删除项目,而不必在执行此操作时锁定整个结构.