Module coalescing_buffer::simple
[−]
[src]
This is similar to having an atomic variable shared. The only difference is only one receiver thread is allowed.
extern crate coalescing_buffer; use coalescing_buffer::simple::new_simple_buffer; use std::thread; use std::sync::Arc; fn main(){ let (sx, rx) = new_simple_buffer::<i32>(); let sx = Arc::new(sx); let sx1 = sx.clone(); let producer0 = thread::spawn(move || { for i in 0..10000000 { sx.offer(i); } sx.offer(-1); }); let producer1 = thread::spawn(move || { for i in 0..10000000 { sx1.offer(i); } sx1.offer(-1); }); let consumer = thread::spawn(move || loop { if let Some(ref value) = rx.poll() { if *value == -1 { break; } } }); let _ = producer0.join(); let _ = producer1.join(); let _ = consumer.join(); }
Structs
Receiver | |
Sender |
Functions
new_simple_buffer |
Creates a ring buffer and provides a sender(producer) and a receiver(consumer) to send/receive data to/from the buffer. Sender and Receiver can only be access by one thread |