Crates.io | blockingqueue |
lib.rs | blockingqueue |
version | 0.1.1 |
source | src |
created_at | 2020-10-26 15:29:55.718171 |
updated_at | 2020-10-29 12:14:42.675894 |
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());
}