#thread-pool #thread #threading

jobpool

一个简单且轻量级的线程池实现

26 个版本

使用旧的 Rust 2015

0.3.8 2018年4月19日
0.3.7 2018年4月18日
0.3.3 2017年12月2日
0.3.2 2017年11月6日
0.1.10 2017年9月28日

#789 in 并发


2 个 crate 中使用(通过 tange

MIT 许可证

26KB
522

JobPool

为 Rust 实现的一个简单且轻量级的线程池实现。

Build Status

示例

extern crate jobpool;

use jobpool::JobPool;
use std::thread;
use std::time::Duration;
use std::sync::mpsc;

fn main() {
    let pool_size = 8; // or number of cpu cores
    let mut pool = JobPool::new(pool_size);
    // pool.auto_grow(100);

    let (tx, rx) = mpsc::channel();

    for i in 0..100 {
        let tx = tx.clone();
        pool.queue(move || {
            // Do some work, following is just for example's sake
            thread::sleep(Duration::from_millis(100));
            println!("sending: {}", i);
            tx.send(i).unwrap();
        });
        // or pool.queue_with_priority(move || {...}, priority_val);
    }

    for _ in 0..100 {
        match rx.recv() {
            Ok(val) => println!("received: {}", val),
            Err(e) => eprintln!("Error: {}", e),
        }
    }

    // Explicit call to shutdown; JobPool shuts down automatically after
    // going out of scope as well.
    pool.shutdown();
}

无运行时依赖