Crate poolite [] [src]

poolite

A lite thread pool library written for Rust.

Usage

On Cargo.toml:

 [dependencies]
 poolite = "0.4.0"

or

 [dependencies]
 poolite = { git = "https://github.com/biluohc/poolite",branch = "master", version = "0.4.0" }

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.

Constants

DAEMON

Defaults open daemon.

TIME_OUT_MS

Defaults thread's idle time(ms).