Go语言的调度器是Go运行时系统的一部分,负责管理和调度Go Routine的执行。
Go语言的调度器设计采用了三级模型:G、P、M。
G: Go Routine,代表一个待执行的任务。
P: Processor,处理器,代表Go语言的调度上下文环境,每个P都有一个本地的Go Routine队列,并且每个P在同一时间只能被一个线程(M)所拥有。
M: Machine,代表一个操作系统的线程。
Go语言的调度器采用了M:N的调度模型,也就是说,M个Go Routine会被N个操作系统线程所调度和执行。