#broadcast-channel #channel #lock-free #broadcast #bounded-channel #circular-buffer #fifo-queue

总线

一个无锁、有界、单生产者、多消费者、广播通道

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 2617/week @ 2024-04-13 2836/week @ 2024-04-20 2811/week @ 2024-04-27 2274/week @ 2024-05-04 2605/week @ 2024-05-11 3363/week @ 2024-05-18 2383/week @ 2024-05-25 2695/week @ 2024-06-01 1640/week @ 2024-06-08 1429/week @ 2024-06-15 1792/week @ 2024-06-22 1517/week @ 2024-06-29 1854/week @ 2024-07-06 1711/week @ 2024-07-13 2047/week @ 2024-07-20 1748/week @ 2024-07-27

每月下载量 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