#thread-pool #latency #minimize #optimized #worker #job #async

fast-threadpool

线程池实现,以最小化延迟为优化目标

8 个版本

0.3.0 2021年1月8日
0.2.3 2020年12月17日
0.2.1 2020年10月27日
0.1.2 2020年10月25日

#908 in 并发

每月下载量:31

MIT 许可协议

22KB
425

快速线程池

此线程池实现针对最小化延迟进行了优化。特别是,您在任务执行前不会承担线程创建的成本。只有在工作者的“无用时间”(例如,在返回作业结果后)才会创建新线程。

延迟的唯一可能情况是缺少“可用”的工作者。为了最小化这种情况的概率,此线程池始终保持一定数量的工作者可用(可配置)。

此实现允许您异步等待作业的结果,因此您可以使用它作为您异步运行时中 spawn_blocking 函数的替代品。

使用

use fast_threadpool::{ThreadPool, ThreadPoolConfig};

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

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

从异步任务中使用

use fast_threadpool::{ThreadPool, ThreadPoolConfig};

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

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

依赖项

~265–700KB
~13K SLoC