调度流程(WIP)

组件大图 #

Go 的调度流程 #

我们可以认为 goroutine 的创建与调度循环是一个生产-消费流程。整个 go 程序的运行就是在不断地执行 goroutine 的生产与消费流程。

创建 goroutine 即是在创建任务,这些生产出来的 goroutine 可能会有三个去处,分别是:

  • p.runnext
  • p.localrunq
  • schedt.global runq

按照执行权来讲,优先级是逐渐降低的。

调度循环会不断地从上面讲的三个目标中消费 goroutine,并执行。

goroutine 生产 #

goroutine 消费 #