Sooua
登录
返回项目列表
参与贡献·

Tokio 运行时贡献

为 Rust 异步运行时 Tokio 修复任务调度器的一处公平性问题。

#Rust#异步#开源贡献

我在研究 Tokio 多线程调度器时,发现了一个任务饥饿的边界情况:在特定负载下,本地队列的任务会持续抢占,导致全局队列里的任务长时间得不到调度。

我做了什么

  • 复现并定位问题:写了一个最小复现用例,证明全局队列在高并发本地唤醒下会被"饿死"。
  • 提交修复:引入一个周期性检查全局队列的计数器,保证公平性,同时不引入明显开销。
  • 补充基准:用 criterion 验证修复前后吞吐无回退。

收获

深入读了 work-stealing 调度器的实现,理解了"公平性 vs 吞吐"在真实运行时里的权衡。相关原理我整理在〔深入理解 Rust 异步运行时〕一文。