Tokio 是 Rust 生态最主流的异步运行时,其多线程调度器采用 Work-Stealing(工作窃取) 算法:每个 worker 线程维护本地任务队列,空闲线程从其他队列尾部窃取任务,实现负载均衡并减少锁竞争。
一、Tokio 多线程运行时与阻塞任务隔离
rust
use tokio::runtime::Builder;
fn main() {
let rt = Builder::new_multi_thread()
.worker_threads(8) // 与 CPU 核心数对齐
.enable_all()
.thread_name("tokio-worker")
.build()
.unwrap();
rt.block_on(async {
// 异步任务由 work-stealing 调度器分发
let handles: Vec<_> = (0..1000)
.map(|i| tokio::spawn(async move { process(i).await }))
.collect();
for h in handles {
h.await.unwrap();
}
});
}