Skip to content

31.1 threadpool

threadpool 是一个基本的线程池实现。在标准库中,我们可以用std::thread::spawn()方法创建新线程。而这个库可以让我们指定一组固定数量的线程,它自动将每个任务分配到线程中去执行。使用方法如下:


rust
use threadpool::ThreadPool;
use std::sync::mpsc::channel;

fn main() {
    let n_workers = 4;
    let n_jobs = 8;
    let pool = ThreadPool::new(n_workers);

    let (tx, rx) = channel();
    for _ in 0..n_jobs {
        let tx = tx.clone();
        pool.execute(move|| {
            tx.send(1).expect("channel will be there waiting for the pool");
        });
    }

    assert_eq!(rx.iter().take(n_jobs).fold(0, |a, b| a + b), 8);

ThreadPool::executestd::thread::spawn的区别就是,它需要先创建一个对象,然后调用:execute方法,其他都差不多。

Released under the MIT License