23 个稳定版本

2.4.1 2023年8月20日
2.4.0 2023年3月25日
2.3.0 2022年7月2日
2.2.3 2020年3月3日
0.2.1 2016年6月3日

并发 类别中排名第 41

Download history · Rust 包仓库 2617/week @ 2024-04-13 · Rust 包仓库 2836/week @ 2024-04-20 · Rust 包仓库 2811/week @ 2024-04-27 · Rust 包仓库 2274/week @ 2024-05-04 · Rust 包仓库 2605/week @ 2024-05-11 · Rust 包仓库 3363/week @ 2024-05-18 · Rust 包仓库 2383/week @ 2024-05-25 · Rust 包仓库 2695/week @ 2024-06-01 · Rust 包仓库 1640/week @ 2024-06-08 · Rust 包仓库 1429/week @ 2024-06-15 · Rust 包仓库 1792/week @ 2024-06-22 · Rust 包仓库 1517/week @ 2024-06-29 · Rust 包仓库 1854/week @ 2024-07-06 · Rust 包仓库 1711/week @ 2024-07-13 · Rust 包仓库 2047/week @ 2024-07-20 · Rust 包仓库 1748/week @ 2024-07-27 · Rust 包仓库

每月下载量 7,558
29 Crates 中使用(直接使用 27 个)

MIT/Apache 许可协议

40KB
433 行代码(不含注释)

bus

Crates.io Documentation Codecov

Bus 提供了一个无锁、有界、单生产者、多消费者、广播通道。

注意:在当前实现中,bus 有时会在忙等待,这可能导致 CPU 使用率增加 — 请参阅 #23

它使用循环缓冲区和原子指令来实现无锁的单生产者、多消费者通道。接口类似于 std::sync::mpsc 通道,但是可以产生多个消费者(通道的读取者),而只能存在一个发送者。此外,与大多数多消费者 FIFO 队列不同,bus 是 广播 的;每个发送都会发送给每个消费者。

我在文献中没有看到这种特定的实现(需要一些额外的簿记来允许多个消费者),但在 Ross Bencina 的博客文章 "关于无锁和等待免费算法的一些笔记" 中可以找到很多相关阅读。

请参阅 文档 以获取使用示例。

许可协议

根据您的选择,许可协议为以下之一

贡献

除非您明确说明,否则根据 Apache-2.0 许可协议定义的,您有意提交给作品的所有贡献,均将根据上述协议双重许可,不附加任何额外条款或条件。

依赖项

~0.5–5.5MB
~12K SLoC