#线程安全 #管理器 #队列 #数字 #特质 #实例

conman

纯 Rust 安全的并发管理器和工作项队列

6 个版本

0.1.6 2020 年 5 月 20 日
0.1.5 2020 年 5 月 20 日

#1205并发

MIT/Apache

7KB
176

Conman - 并发管理器

Conman 是一个高性能的线程安全、线程和工作项管理库。使用简单,只需实例化一个 conman 实例,并指定希望使用的线程数。在您的结构体上实现 ConmanItem 特质,并将其添加为项目。如果有可用的线程,它将立即被拉取;否则,它将被添加到队列中,并由下一个可用的线程拉取。

没有使用不安全代码...

[dependencies]
conman = "0.1.5"

Conman 仓库

pub extern crate conman;
pub use conman::*;

struct MyItem {
    id: u32
}
impl conman::ConmanItem for MyItem {
    fn execute (&self) {
        println!("{}", self.id);
    }
}
fn main() {

    // I like to use num_cpus to get the number of logical cores available
    // let mut cman = conman::Conman::new(num_cpus::get());

    // new instance
    let mut cman = conman::Conman::new(8);

    for i in 0..100 {
        let item = Box::new(MyItem { id: i });

        // add an item
        cman.add_item(item);

        // add item at front of queue
        // cman.add_item_priority(item);
    }
    std::thread::sleep(Duration::from_millis(80));
    let remaining = cman.stop();
    println!("Stopped with {} items in queue", remaining);
}

无运行时依赖