什么是相当于英特尔的tbb :: concurrent_queue的Rust?

时间:2018-03-18 11:27:20

标签: multithreading concurrency rust concurrent-queue rust-crates

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

  1. multiqueue

  2. two-lock-queue

  3. crossbeam-deque

  4. 甚至

    1. futures-pool

    2. thread-pool

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

      虽然我对C ++编程知之甚少,但我很确定tbb的concurrent_queue是一个非常快速的MPMC队列实现。如果只将队列容器包装在Mutex(由我的一位朋友测试)中,则无法接近该性能。

      由于效率(延迟和吞吐量)是我关心的主要内容,我应该在Rust中使用什么?队列可以是有界的也可以是无界的,我可能需要获取 - 释放顺序。

1 个答案:

答案 0 :(得分:2)

我认为横梁包的crossbeam::sync::MsQueuecrossbeam::sync::SegQueue与您链接的concurrent_queue功能相同。

它们是无锁队列,可以pushtry_pop以非阻塞方式使用。

This benchmark表示SegQueueMsQueue快,但这可能仍取决于您的使用案例。