P(Processor)
P 是处理Goroutine的调理器的上下文,每个P包含一个本地运行队列(Local Run Queue),用于存储需要运行的Goroutine。
P的数目由GOMAXPROCS设置决定,它决定了并行实行的最大线程数。
P不但管理Goroutine,还负责与M协作,将Goroutine分配给M实行。
M(Machine)
M 代表操作系统的线程,负责实行Goroutine。一个M一次只能实行一个Goroutine。
M是实际实行代码的工作单位,M与P绑定后才气实行Goroutine。 M可以通过调理器从全局运行队列中拉取新的Goroutine,也可以与其他M协作完成工作。