Crate fast_threadpool

Source
Expand description

This threadpool implementation is optimized to minimize latency. In particular, you are guaranteed never to pay the cost of thread spawn before your task is executed. New threads are spawned only during the “useless time” of the workers (for example, after returning the result of a job).

The only possible case of latency is the lack of “available” workers. To minimize the probability of this case, this threadpool constantly keeps a certain number of workers available (configurable).

This implementation allows you to wait for the result of a job asynchronously, so you can use it as a replacement for the spawn_blocking function of your async runtime.

§Use

use fast_threadpool::{ThreadPool, ThreadPoolConfig};

let threadpool = ThreadPool::start(ThreadPoolConfig::default(), ()).into_sync_handler();

assert_eq!(4, threadpool.execute(|_| { 2 + 2 })?);

§Use from async task

use fast_threadpool::{ThreadPool, ThreadPoolConfig};
let threadpool = ThreadPool::start(ThreadPoolConfig::default(), ()).into_async_handler();

assert_eq!(4, threadpool.execute(|_| { 2 + 2 }).await?);

Structs§

JoinHandle
Join handle
ThreadPool
A fast thread pool (never pay the cost of thread spawn.)
ThreadPoolAsyncHandler
Asynchronous handler to execute jobs on the thread pool
ThreadPoolConfig
Thread pool configuration
ThreadPoolDisconnected
Thread pool disconnected
ThreadPoolSyncHandler
Synchronous handler to execute jobs on the thread pool