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
每月下载量 7,558 次
在 29 个 Crates 中使用(直接使用 27 个)
40KB
433 行代码(不含注释)
bus
Bus 提供了一个无锁、有界、单生产者、多消费者、广播通道。
注意:在当前实现中,bus 有时会在忙等待,这可能导致 CPU 使用率增加 — 请参阅 #23。
它使用循环缓冲区和原子指令来实现无锁的单生产者、多消费者通道。接口类似于 std::sync::mpsc
通道,但是可以产生多个消费者(通道的读取者),而只能存在一个发送者。此外,与大多数多消费者 FIFO 队列不同,bus 是 广播 的;每个发送都会发送给每个消费者。
我在文献中没有看到这种特定的实现(需要一些额外的簿记来允许多个消费者),但在 Ross Bencina 的博客文章 "关于无锁和等待免费算法的一些笔记" 中可以找到很多相关阅读。
请参阅 文档 以获取使用示例。
许可协议
根据您的选择,许可协议为以下之一
- Apache 许可协议第 2.0 版(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0》)
- MIT 许可协议(《LICENSE-MIT》或 http://opensource.org/licenses/MIT》)
。
贡献
除非您明确说明,否则根据 Apache-2.0 许可协议定义的,您有意提交给作品的所有贡献,均将根据上述协议双重许可,不附加任何额外条款或条件。
依赖项
~0.5–5.5MB
~12K SLoC