2 个不稳定版本
0.2.0 | 2024年1月1日 |
---|---|
0.1.0 | 2023年6月11日 |
790 在 并发 中排名
每月 29 次下载
用于 2 crates
23KB
258 行
tinypool-rs
tinypool 是 Rust 中一个简单的线程池实现。
线程池是一组可以用来并发执行任务的线程集合。这个 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);