#thread-pool #scoped #thread

poolite

轻量级线程池库

20 个版本

使用旧的 Rust 2015

0.7.1 2017年12月6日
0.6.4 2017年9月27日
0.6.2 2017年4月24日
0.6.1 2017年3月10日
0.2.0 2016年12月31日

#threadpool 中排名第 8

Download history 17/week @ 2024-03-30 3/week @ 2024-04-06 5/week @ 2024-05-18 1/week @ 2024-05-25 2/week @ 2024-06-08 2/week @ 2024-06-15

每月下载 60

MIT 许可证

31KB
719 代码行

Build status Latest version All downloads Downloads of latest version Documentation

poolite

为 Rust 编写的轻量级线程池库。

使用方法

在 Cargo.toml 中

 [dependencies]
 poolite = "0.7.1"

文档

  • 修改 toml 文件后,运行 cargo doc --open

基本用法

extern crate poolite;
use poolite::Pool;

fn main() {
    let pool = Pool::new().unwrap();
    for i in 0..38 {
        pool.push(move || test(i));
    }

    pool.join(); //wait for the pool
}

fn test(msg: i32) {
    println!("key: {}\tvalue: {}", msg, fib(msg));
}

fn fib(msg: i32) -> i32 {
    match msg {
        0...2 => 1,
        x => fib(x - 1) + fib(x - 2),
    }
}

Scoped Task

extern crate poolite;
use poolite::Pool;

fn main() {
    let pool = Pool::new().unwrap();
    let mut array = (0..100usize).into_iter().map(|i| (i, 0)).collect::<Vec<_>>();

    // scoped method will waiting scoped's task running finish.
    pool.scoped(|scope| for i in array.iter_mut() {
        // have to move
        scope.push(move|| i.1 = i.0*i.0);
    });

    for (i, j) in array {
        println!("key: {}\tvalue: {}", i, j);
    }
}

更多示例...

依赖

~5.5MB
~105K SLoC