Goroutine 并发调度通过 GPM 模型实现,包含四个结构:M、G、P、Sched:
  • M:代表内核级线程,一个 M 对应一个线程
  • G:代表一个 Goroutine,包含自己的栈、程序计数器等信息
  • P:指处理器,主要用途是用来执行 Goroutine,维护一个 Goroutine 队列,同时还有一个全局队列。每一个运行的 M 都必须绑定一个 P,就像线程必须在么一个 cpu 核上执行一样
  • Sched:代表调度器,维护 M 和 G 的队列和状态信息