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
每月下载 60 次
31KB
719 代码行
poolite
为 Rust 编写的轻量级线程池库。
使用方法
在 Cargo.toml 中
[dependencies]
poolite = "0.7.1"
文档
- 访问 Docs.rs
或
- 修改 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