3 个版本
0.1.2 | 2021年1月11日 |
---|---|
0.1.1 | 2021年1月9日 |
0.1.0 | 2021年1月9日 |
866 在 并发 中排名
每月 23 次下载
13KB
252 行
Bondi - 无锁单生产者多生产者环形缓冲区
Bondi 是创建一个无锁、有界、单生产者、多消费者数据结构的又一次尝试。
注意:这是一个实验性项目。请期待可能出现的问题和变化。
使用方法
// initialize a writer and two readers
// send 100 `Message`s, and receive them from different threads
struct Message(usize)
fn main() {
let bondi = Bondi::new(100);
let writer = bondi.get_tx().unwrap();
let reader = bondi.get_rx().unwrap();
let reader2 = bondi.get_rx().unwrap();
std::thread::spawn(move || {
for i in 0..100 {
writer.write(Message(i));
}
});
std::thread::spawn(move || {
let _ = reader.read();
});
std::thread::spawn(move || {
let _ = reader2.read();
}).join().unwrap();
}
灵感来源
依赖项
~0.4–1MB
~21K SLoC