我正在寻找Rust中英特尔concurrent_queue
模块中tbb的等效内容。我找到了一些板条箱:
甚至
我觉得他们都在做类似的事情,但是在他们的文档中,他们似乎正在使用不同的算法来实现。
虽然我对C ++编程知之甚少,但我很确定tbb的concurrent_queue
是一个非常快速的MPMC队列实现。如果只将队列容器包装在Mutex
(由我的一位朋友测试)中,则无法接近该性能。
由于效率(延迟和吞吐量)是我关心的主要内容,我应该在Rust中使用什么?队列可以是有界的也可以是无界的,我可能需要获取 - 释放顺序。
答案 0 :(得分:2)
我认为横梁包的crossbeam::sync::MsQueue
和crossbeam::sync::SegQueue
与您链接的concurrent_queue功能相同。
它们是无锁队列,可以push
和try_pop
以非阻塞方式使用。
This benchmark表示SegQueue
比MsQueue
快,但这可能仍取决于您的使用案例。