相关疑难解决方法(0)

无锁算法库

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

c algorithm lock-free

9
推荐指数
3
解决办法
9829
查看次数

无锁双向链表的原子操作

我正在根据这些论文编写一个无锁双向链表:

\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\n
union 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的上述伪代码的代码:

\n\n
template< 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)

c++ multithreading atomic lock-free c++11

5
推荐指数
1
解决办法
1万
查看次数

C++线程安全的双向链表

对于我正在编写的应用程序,我需要上面的数据结构.我想知道是否有一个库已经实现了它,或者我是否必须自己编写它?

如果没有必要,我真的不想重新发明轮子.

我需要这种结构能够使用多个线程添加和删除项目,而不必在执行此操作时锁定整个结构.

c++ windows data-structures

1
推荐指数
1
解决办法
2568
查看次数