1个不稳定版本
0.1.0 | 2020年9月7日 |
---|
#13 在 #idle
每月 25 次下载
22KB
468 行
为actix-xxx crate提供动态线程池。
使用方法
- 添加到您的
Cargo.toml
并替换actix-threadpool
。
lib.rs
:
用于阻塞操作的动态线程池
根据工作负载懒惰地生成线程,最多可生成您机器的 逻辑 CPU 核心数 * 5
个线程。任何空闲30秒的已创建线程将被回收和终止。
.* 设置可以通过环境变量进行配置。
示例
use std::env::set_var;
#[actix_rt::main]
async fn main() {
// Optional: Set the max thread count for the blocking pool.
set_var("ACTIX_THREADPOOL", "30");
// Optional: Set the min thread count for the blocking pool.
set_var("ACTIX_THREADPOOL_MIN", "1");
// Optional: Set the timeout duration IN SECONDS for the blocking pool's idle threads.
set_var("ACTIX_THREADPOOL_TIMEOUT", "30");
let future = actix_dynamic_threadpool::run(|| {
/* Some blocking code with a Result<T, E> as return type */
Ok::<usize, ()>(1usize)
});
/*
We can await on this blocking code and NOT block our runtime.
When we waiting our actix runtime can switch to other async tasks.
*/
let result: Result<usize, actix_dynamic_threadpool::BlockingError<()>> = future.await;
assert_eq!(1usize, result.unwrap())
}
依赖项
~1.8–2.4MB
~51K SLoC