slave-pool

Crates.io Documentation Build

Simple thread pool

usage

```rust use slavepool::ThreadPool; const SECOND: core::time::Duration = core::time::Duration::fromsecs(1);

static POOL: ThreadPool = ThreadPool::new();

POOL.set_threads(8); //Tell how many threads you want

let mut handles = Vec::new(); for _ in 0..8 { handles.push(POOL.spawn_handle(|| { std::thread::sleep(SECOND); })); }

POOL.set_threads(0); //Tells to shut down threads

for handle in handles { assert!(handle.wait().is_ok()) //Even though we told it to shutdown all threads, it is going to finish queued job first }

let handle = POOL.spawnhandle(|| {}); assert!(handle.waittimeout(SECOND).is_err()); // All are shutdown now

POOL.set_threads(1); //But let's add one more

assert!(handle.wait().is_ok());

let handle = POOL.spawn_handle(|| panic!("Oh no!")); // We can panic, if we want

assert!(handle.wait().is_err()); // In that case we'll get error, but thread will be ok

let handle = POOL.spawn_handle(|| {});

POOL.set_threads(0);

assert!(handle.wait().is_ok()); ```