Rust in Everything
基于 tokio 1.54.1

tokio 源码解析

这一卷对着 tokio 1.54.1(tag tokio-1.54.1,commit b53b200)读源码。所有源码链接都指向这个 tag,行号不会随上游变化而失效。

tokio 主 crate 大约 10.9 万行,这一卷只沿两条主线读:

  • 任务主线:tokio::spawn 之后,任务怎么分配内存、进入队列、被 worker 取出来 poll,挂起后又怎么被唤醒。
  • IO 主线:TcpStream::read 返回 Pending 之后,谁在等就绪事件,事件来了又怎么找回原来的任务。
flowchart TB
  intro[00 导读] --> overview[01 全景]
  overview --> task[03 任务]
  task --> sched[04 调度器]
  overview --> rt[02 运行时骨架]
  rt --> io[05 IO 驱动]
  rt --> time[06 定时器]
  sched --> sync[07 同步原语]
  io --> api[08 用户层 API]
  time --> api
  sync --> design[09 设计取舍]
  api --> design
  design --> pit[10 常见坑]
  pit --> site[11 在本站中]
  site --> hands[12 动手]

从「导读」开始,它给出两种读法:快读只看每章开头的图和小结,精读跟着源码链接一行行看。

💬 关联讨论

发起讨论
加载中...