Crate poolite [−] [src]
poolite
A lite thread pool library written for Rust.
Usage
On Cargo.toml:
[dependencies]
poolite = "0.4.2"
or
[dependencies]
poolite = { git = "https://github.com/biluohc/poolite",branch = "master", version = "0.4.2" }
Example
On code:
extern crate poolite; use poolite::Pool; use std::collections::BTreeMap; use std::sync::{Arc, Mutex}; use std::time::Duration; use std::thread; fn main() { let pool = Pool::new().run(); let map = Arc::new(Mutex::new(BTreeMap::<i32, i32>::new())); for i in 0..28 { let map = map.clone(); pool.spawn(Box::new(move || test(i, map))); } loop { thread::sleep(Duration::from_millis(100)); //wait for the pool 100ms. if pool.is_empty() { break; } } for (k, v) in map.lock().unwrap().iter() { println!("key: {}\tvalue: {}", k, v); } } fn test(msg: i32, map: Arc<Mutex<BTreeMap<i32, i32>>>) { let res = fib(msg); { let mut maplock = map.lock().unwrap(); maplock.insert(msg, res); } } fn fib(msg: i32) -> i32 { match msg { 0...2 => 1, x => fib(x - 1) + fib(x - 2), } }
Structs
Pool |
Pool struct. |