单进程:阻塞

多进程/多线程:上下文切换、调度开销大,设计复杂,越多资源耗费越大
进程:4G虚拟内存
线程:4M

协程:不同语言都可开发
N:1 无法利用多个cpu
1:1:和多线程一样

M:N模式的调度器:GMP Processor 就在这里优化

早期调度器:整体全局队列。

--------------GMP
G:goroutine
全局队列:
P列表
M列表
空闲M列表
GOMAXPROCS:允许最大M个数

work stealing机制 当本线程⽆可运⾏的G时,尝试 从其他线程绑定的P偷取G,⽽不 是销毁线程。
hand off机制 当本线程因为G进⾏系统调⽤阻 塞时,线程释放绑定的P,把P转 移给其他空闲的线程执⾏。

线程复用:steal、休眠、减少销毁和重建
抢占机制:

M0:
每一个M一个G0:

trace可视化工具查看G/M/P等资源,web/终端查看
GMP11个正常场景,顺序介绍,还有一些特殊场景

总结:结合全局队列和休眠M队列通过P对G进行高效的调度,把合适的G始终放在合适的P利用合适的M进行处理,利用有限的线程减少对系统的耗费。
关键词汇:调度、队列,阻塞