C++ 并发可变优先级队列

C++ 并发可变优先级队列,c++,algorithm,data-structures,concurrency,priority-queue,C++,Algorithm,Data Structures,Concurrency,Priority Queue,是否存在并发可变优先级队列?理想情况下,我在寻找C++实现,但是对于初学者来说,指向一个算法的指针会非常有用。 明确地说,我正在寻找一个优先级队列,在这里我可以调整元素的优先级。特别是,TBB的并发优先级队列没有提供必要的功能。(就此而言,STL的priority_queue,即使我们忽略了并发性)库提供了我想要的串行功能,但没有并发性。当然,我正在寻找比每次操作都锁定整个队列更细粒度的东西。并发优先级队列通常使用skiplist实现,所以Facebook可能适合您的要求。我怀疑任何这样的队列要

是否存在并发可变优先级队列?理想情况下,我在寻找C++实现,但是对于初学者来说,指向一个算法的指针会非常有用。
明确地说,我正在寻找一个优先级队列,在这里我可以调整元素的优先级。特别是,TBB的
并发优先级队列
没有提供必要的功能。(就此而言,STL的
priority_queue
,即使我们忽略了并发性)库提供了我想要的串行功能,但没有并发性。当然,我正在寻找比每次操作都锁定整个队列更细粒度的东西。

并发优先级队列通常使用skiplist实现,所以Facebook可能适合您的要求。

我怀疑任何这样的队列要么需要一个粗略的锁,要么需要很多细粒度的锁,两者都不会太有效。但是可能有另一种方法来解决你的问题。你的用例是什么?是的。。我看不出有什么可靠的方法能做这样的事。futex/criticalSection锁有什么大不了的?从树中的一个位置删除指针并将其插入其他位置(或者将指针从一个集合移动到另一个集合,或者在优先级列表实现中执行任何需要执行的操作)不会花费那么长的时间吗?嗯,我真的希望有一个无锁的数据结构。至于更新,使用通常的数据结构,它们非常复杂:您不仅要将指针从一个位置移动到另一个位置,而且还必须重新平衡树,或者执行类似的操作。@JanHudec,至于我的用例,我有几个优先级队列,它们同时(希望)独立处理。但有时一个项目的删除需要更新另一个项目的优先级。非常好的建议。非常感谢你的指点。我只希望他们有一个这个类的文档页面。