#queue #blocking #channel #time #mspc #bq-clone1

blockingqueue

围绕 Rust 的 mspc 通道的一个非常简单的包装器,用于作为阻塞队列使用

2 个版本

0.1.1 2020 年 10 月 29 日
0.1.0 2020 年 10 月 26 日

#48#blocking

每月 26 下载

MIT/Apache

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());
}

无运行时依赖