2 个版本
0.1.1 | 2020 年 10 月 29 日 |
---|---|
0.1.0 | 2020 年 10 月 26 日 |
#48 在 #blocking
每月 26 下载
4KB
60 行
BlockingQueue
围绕 Rust 的 mspc 通道的一个非常简单的包装器,用于作为阻塞队列使用。
使用方法
以下是一个如何使用它的简单示例
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());
}