A helper struct to aid creating a new ThreadPool using default values where no value was explicitly specified.

Handle returned by ThreadPool::evaluate and ThreadPool::complete that allows to block the current thread and wait for the result of a submitted task. The returned JoinHandle may also be sent to the ThreadPool to create a task that blocks a worker thread until the task is completed and then does something with the result. This handle communicates with the worker thread using a oneshot channel blocking the thread when try_await_complete() is called until a message, i.e. the result of the task, is received.

Self growing / shrinking ThreadPool implementation based on crossbeam’s multi-producer multi-consumer channels that enables awaiting the result of a task and offers async support.


The absolute maximum number of workers. This corresponds to the maximum value that can be stored within half the bits of usize, as two counters (total workers and idle workers) are stored in one AtomicUsize.


Trait to implement for all items that may be executed by the ThreadPool.