WorkPool

A super simple implementation of a work queue wrapped by a thread pool.

The goal of this package is to have a quick way of creating a thread pool with a work queue backing for quick projects.

Example

```rust use std::sync::Arc; use work_pool::WorkPool;

fn main() { // Specify number of threads and work queue capacity // Work queue capacity is workload based, but a good // estimate might be 2 or 4 times the number of threads let mut pool = WorkPool::new(8, 64);

// Set the executor function and star tthe work listener
pool.set_executor_and_start(|work| {
    // Work is the data sent by `dispatch`
});

loop {
    // do something, like get a TcpStream
    let stream = accept_next_connection();
    match stream {
        Some(Ok(s)) => pool.dispatch(Arc::new(s)),
        Some(Err(e)) => panic!(e),
        None => break,
    }
}

// Dropping the pool will send a Quit message to all active threads
and detach them. No joins happen here.
drop(pool);

} ```