是否有人知道支持排序操作(即找到第k个元素)的任何无锁定跳过列表实现和/或研究论文?或者,是否有人知道这种手术无法奏效的根本原因?带有等级操作的无锁定跳过列表
加分点:
不承担垃圾收集的执行力度。我的经验已经有不少研究论文忽略了内存管理。
支持:
有关如何军衔操作可以在常规skiplist进行了描述:“一个跳跃列表食谱”由威廉·皮尤
为了更好的无锁skiplist之一描述:“实用锁定自由”的凯尔·弗雷泽
一个更好的无锁skiplist implimentations的:http://www.1024cores.net/home/parallel-computing/concurrent-skip-list
我想我明白你在说什么,但我认为你在更新每个级别的节点“下一个”指针时遇到同样的困难。对于插入操作,插入节点的前辈的“下一个”指针都需要更新,以保持跳过列表的属性。假设等级存储在每个节点中,那么其“下一个”指针需要更新的节点也需要它们的等级更新。对于我来说真正的困难似乎是需要多字比较和交换来更新等级和“下一个”指针。 – tgoodhart 2012-02-06 17:18:17
如果rank是列表中某个节点的位置,那么当插入一个新项目时,不仅需要设置其等级,还应该更新列表中所有后续节点的所有等级。 – 2012-02-06 19:44:35
当然,我错过了。我的意思是说每个节点都存储它在每个级别跳过的节点数量。我相信这个数字可以在更新前任的“下一个”指针的同时更新。 – tgoodhart 2012-02-06 22:02:00