#thread-pool #thread #pool

tinypool

Rust 中一个简单的线程池实现

2 个不稳定版本

0.2.0 2024年1月1日
0.1.0 2023年6月11日

790并发 中排名

每月 29 次下载
用于 2 crates

MIT 许可证

23KB
258

tinypool-rs

tinypool 是 Rust 中一个简单的线程池实现。

线程池是一组可以用来并发执行任务的线程集合。这个 crate 的目的是提供一个简单、易于使用的线程池,可以在任何项目中使用。

文档

crate

示例(1)

use tinypool::ThreadPool;
use std::sync::{Arc, Mutex};

let mut threadpool = ThreadPool::new(Some(4)).unwrap();
let counter = Arc::new(Mutex::new(0));

for _ in 0..100 {
    let counter_thrd = Arc::clone(&counter);
    threadpool.add_to_queue(move || {
        let mut counter = counter_thrd.lock().unwrap();
        *counter += 1;
    });
}

threadpool.join();
assert_eq!(*counter.lock().unwrap(), 100);

示例(2)

use tinypool::ThreadPool;
use std::sync::mpsc;

let mut threadpool = ThreadPool::new(Some(4)).unwrap();
let (tx, rx) = mpsc::channel();

for i in 0..100 {
    let tx = tx.clone();
    threadpool.add_to_queue(move || tx.send(i).unwrap());
}
drop(tx);

let mut sum = 0;
while let Ok(i) = rx.recv() {
   sum += i;
}

assert_eq!(sum, 4950);

无运行时依赖