为什么许多无锁链表的实现都假设列表中的项是唯一的?

问题描述 投票:0回答:1

我正在基于 这个存储库 和《多处理器编程的艺术》一书的第 9.8 章在 C 中实现我的无锁链表。我认为它们是基于“哈里斯的论文”。我发现许多其他无锁链表的实现只支持唯一的项目,就像这里的这些,但为什么呢? 我希望我的实现可以包含列表中的重复项目。基于此代码,直观上,我只注释了第 111-113 行,这些行检查插入时该项目是否已存在,但这不起作用。我想知道为什么这还不够,以及我还应该做哪些修改。或者,如果有人可以分享一些有关支持重复项目的实现的资源,那就太好了。

提前致谢!

过去,当我们谈论“Foobar 对象的链接列表”时,我们通常指的是“下一个”字段(也可能是“上一个”字段)是 Foobar 对象本身的成员。如果我们想要谈论包含指向 Foobar 对象的

pointers
concurrency linked-list atomic lock-free
1个回答
0
投票
nodes

链表,那么我们就会明确地这么说。但这是一个不寻常的案例。我们会认为这是浪费内存和 CPU 能力。 如果你有一个指向 Foobar 的节点列表,那么显然,列表中的两个不同节点可以指向同一个 Foobar,但是如果链接嵌入在 Foobar 对象中,就像那些作者学习他们的方法时那样craft,那么同一个 Foobar 对象不能在列表中出现多次。

© www.soinside.com 2019 - 2024. All rights reserved.