【发布时间】:2011-03-26 06:41:36
【问题描述】:
有人可以向我指出一种用于排序线程安全原子(无锁)链表/优先级队列的算法吗?我知道如何只做一个链表本身,但现在我需要一个排序的。与未排序的列表相比,我不确定这是微小的变化还是重大的重新设计,因此我想在自己制作之前先看看现有的算法。
它实际上不必是一个列表(或技术上已排序),但它的行为类似于具有以下属性的优先级队列:
- 最低元素是具有最小整数字段值的元素
- 在恒定时间内访问最低元素
- 仅通过原子操作进行修改(无锁)
- 在线性时间内插入/移除
内容可能是指向结构的指针。要排序的整数字段是该结构的成员之一。
这是一个 C++ 程序,但我不需要代码示例,算法描述就可以了。接近但不完美的算法也值得赞赏。
【问题讨论】:
-
如果您只需要最小元素,似乎您想要一个原子优先级队列。不过,这仍然是一个有趣的问题,我很好奇答案是什么。
-
是的,优先级队列可能更接近我在逻辑上想要的。我已经更新了描述。