| Crates.io | blockingqueue |
| lib.rs | blockingqueue |
| version | 0.1.1 |
| created_at | 2020-10-26 15:29:55.718171+00 |
| updated_at | 2020-10-29 12:14:42.675894+00 |
| description | A very very simple wrapper around Rust's mspc channel to work as a blocking queue. |
| homepage | https://github.com/RandomApfel/rust-blockinqueue |
| repository | |
| max_upload_size | |
| id | 305658 |
| size | 3,969 |
A very very simple wrapper around Rust's mspc channel to work as a blocking queue.
Here is a little example on how to use it:
use blockingqueue::BlockingQueue;
use std::{thread, time};
fn main() {
let bq = BlockingQueue::new();
let bq_clone1 = bq.clone();
thread::spawn(move || {
thread::sleep(time::Duration::from_millis(100));
bq_clone1.push(123);
bq_clone1.push(456);
bq_clone1.push(789);
});
let bq_clone2 = bq.clone();
thread::spawn(move || {
thread::sleep(time::Duration::from_millis(400));
bq_clone2.push(321);
bq_clone2.push(654);
bq_clone2.push(987);
});
let bq_clone3 = bq.clone();
let read_three_thread = thread::spawn(move || {
for _ in 0..3 {
println!("Popped in child thread: {}", bq_clone3.pop());
}
});
for _ in 0..3 {
println!("Popped in parent thread: {}", bq.pop());
}
read_three_thread.join().unwrap();
println!("I will wait forever here...");
println!("{}", bq.pop());
}