我正在编写的应用程序需要上述数据结构。我想知道是否已经有一个库可以实现它,还是我必须自己编写它?

如果不需要的话,我真的不想重新发明轮子。

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

最佳答案

链接到相关研究:Is a lock (wait) free doubly linked list possible?

由于您不要求使用无锁容器,因此我并未将其标记为完全重复的容器。

注意:虽然接口(interface)和性能特征看起来像一个双链表,但在内部,这些结构基于哈希表或其他结构非常复杂。没有什么东西会在内部创建双链表,并且不会同时锁定。我不记得看到任何证明,但是我认为这是不可能的。

根据您的其他信息,我认为您根本不需要双重链接列表。您可以使用Windows API single linked list instead。要添加使用InterlockedPushEntrySList,要删除以进行处理,请使用InterlockedPopEntrySList。

关于c++ - C++线程安全双链表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3698847/

10-11 15:49