欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Rust 异步运行时:Tokio 任务调度与 Work-Stealing 机制

发表于:|最后更新:|分类:系统编程|阅读:1474 次

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();
        }
    });
}