2

我正在寻找与Rust 中concurrent_queue英特尔的tbb模块等效的模块。我找到了一些板条箱:

  1. 多队列

  2. 两锁队列

  3. 横梁双端

乃至

  1. 期货池

  2. 线程池

我觉得他们都在做类似的事情,但是在他们的文档中,他们似乎使用不同的算法来实现。

虽然我不太了解 C++ 编程,但我很确定 tbb'sconcurrent_queue是一个非常快速的 MPMC 队列实现。Mutex如果仅将队列容器包装在 a 中(我的一位朋友对此进行了测试),则无法接近该性能。

由于效率(延迟和吞吐量)是我关心的主要问题,我应该在 Rust 中使用什么?队列可以是有界或无界的,我可能需要获取-发布排序。

4

1 回答 1

2

我认为 crossbeam crate 中的 thecrossbeam::sync::MsQueue和 the与您链接的concurrent_queuecrossbeam::sync::SegQueue具有相同的功能。

push它们是无锁队列,可以与和一起以非阻塞方式使用try_pop

此基准表明SegQueue比 快MsQueue,但这可能仍取决于您的用例。

于 2018-03-18T13:14:27.377 回答