GMP
小于 1 分钟
GPM
这篇文章写的太细致了,amazing
- G goroutine
- P processor
- M thread
术语
- 全局队列 Global Queue
- P的本地队列 (max 256) (out of size move half to GP)
- P(runtime.GOMAXPROCS数量),程序启动时创建
- M 从P之中获取G运行,P本地队列空了从 [Global Queue] 放到P的本地队列或者从 [其他P的本地队列] 偷一半到自己P的本地队列
- M在不够用时可以新建M
M 和 P 的数量关系
数量上没有绝对的关系,P 固定而 M 不固定
G必须执行在M之中
1个M必须有1个P,M和P是1:1 (绑定关系而言)
M阻塞住了,P会寻找其他M