9 个稳定版本
2.4.1 | 2022年7月24日 |
---|---|
2.4.0 | 2022年7月23日 |
2.2.0 | 2020年12月19日 |
2.0.0 | 2017年1月1日 |
1.0.2 | 2016年3月20日 |
#617 in 并发
50KB
1K SLoC
Magnetic
Magnetic 包含了一组高性能队列,适用于开发低延迟应用程序。除非另有说明,所有队列均为先进先出队列。
更多信息请参阅文档
lib.rs
:
Magnetic 包含了一组高性能队列,适用于开发低延迟应用程序。除非另有说明,所有队列均为先进先出队列。
示例
use std::thread::spawn;
use magnetic::spsc::spsc_queue;
use magnetic::buffer::dynamic::DynamicBuffer;
use magnetic::{Producer, Consumer};
let (p, c) = spsc_queue(DynamicBuffer::new(32).unwrap());
// Push and pop within a single thread
p.push(1).unwrap();
assert_eq!(c.pop(), Ok(1));
// Push and pop from multiple threads. Since this example is using the
// SPSC queue, only one producer and one consumer are allowed.
let t1 = spawn(move || {
for i in 0..10 {
println!("Producing {}", i);
p.push(i).unwrap();
}
p
});
let t2 = spawn(move || {
loop {
let i = c.pop().unwrap();
println!("Consumed {}", i);
if i == 9 { break; }
}
});
t1.join().unwrap();
t2.join().unwrap();
依赖项
~115KB