高效、无锁、有界的 Rust 广播通道
注意: 在当前实现中,bus 有时会进行忙等待,这可能会导致 CPU 使用率增加 — 请参阅 #23。
它使用循环缓冲区和原子指令来实现无锁单生产者、多消费者通道。其接口与 std::sync::mpsc 通道类似,但不同之处在于可以生成多个消费者(通道的读者),而只能存在一个发送者。此外,与大多数多消费者 FIFO 队列不同,bus 是广播的;每个发送都会发送给所有消费者。
我没有在文献中看到这种特定实现(需要一些额外的记账来允许多个消费者),但可以在 Ross Bencina 的博客文章 "Some notes on lock-free and wait-free algorithms" 中找到许多相关阅读。请参阅 [文档] 中的使用示例。
除非您明确声明否则,您根据 Apache-2.0 许可协议的定义意图提交的任何贡献,都将被双重授权如上所述,不附加任何其他条款或条件。
暂无开放 Issues,或尚未同步最近议题。