1 个不稳定版本
0.1.0 | 2024年2月21日 |
---|
#19 in #broadcast-channel
27KB
529 行
Blink-channel
快速、无锁、有界、有损的 Rust 广播通道。
有时如果缓冲区中单个元素在读写操作上存在竞争,可能会使 CPU 自旋一段时间。对于小缓冲区,这种情况可能更常见。
它通过环形缓冲区和原子操作实现,这为我们提供了无锁行为,没有额外的依赖。
blink-channel
的 API 与 std::sync::mpsc
通道类似。但是,也有一些区别
- 它允许多个消费者(接收者)和多个生产者(发送者)。
- 通道将每个发送广播给每个消费者。
- 有损的,发送者将覆盖旧数据,因此接收者必须快速,否则会丢失旧数据(不要闪烁)。
- 为
no_std
环境实现。
由于这种特性,它在数据快速到达且新数据总是比旧数据更重要(可以丢弃)的应用程序中很有用。例如,在实现音频驱动程序时,小的故障但保持最新比延迟的音频更好。
最低支持的 Rust 版本 (MSRV)
此包的最低支持的 Rust 版本是 1.60.0
许可证
在 MIT
许可证下授权 (LICENSE 或 http://opensource.org/licenses/MIT)
依赖关系
~0–24MB
~331K SLoC