https://www.cnblogs.com/sunsky303/p/9115530.html
https://blog.csdn.net/weixin_40165163/article/details/90038008
https://blog.51cto.com/1427133/2160211
M machine 对应系统线程
P processor 对应cpu数量
G goroutine
一开始,m会对应p,运行自己队列的g,一个g阻塞,可以运行自己队列的其他g。全部阻塞的话,就去global的队列里面找g,实在还是不行,就去其他的m队列抢g
如果是因为system call 导致的阻塞,不能直接运行其他g了,那就只能新开一个m,将p和队列转移过去
m是系统级线程,等返回,就会尝试获得p,或者加入其他的m队列,或者加到全局的队列里面去