Lock-free queues.
Supported on the stable, beta, and nightly Rust channels.
Released under the Apache License 2.0.
- Bounded lock-free SPSC queue
- Bounded lock-free MPMC queue
- Unbounded lock-free SPSC queue
- Unbounded lock-free MPMC queue
extern crate npnc;
use std::thread;
use npnc::bounded::spsc;
fn main() {
let (producer, consumer) = spsc::channel(64);
// Producer
let b = thread::spawn(move || {
for index in 0..32 {
producer.produce(index).unwrap();
}
});
// Consumer
let a = thread::spawn(move || {
loop {
if let Ok(item) = consumer.consume() {
println!("{}", item);
if item == 31 {
break;
}
}
}
});
a.join().unwrap();
b.join().unwrap();
}