Go runtime 调度器精讲(十一):总览全局为,可以这样表达:Go runtime 调度器精讲(十一):总览全局是啥?
摘要:原创文章,欢迎转载,转载请注明出处,谢谢。 【目录】 Go runtime 调度器精讲(一):Go 程序初始化 Go runtime 调度器精讲(二):调度器初始化 Go runtime 调度器精讲(三):main goroutine 创建
原创文章,欢迎转载,转载请注明出处,谢谢。
【目录】
Go runtime 调度器精讲(一):Go 程序初始化
Go runtime 调度器精讲(二):调度器初始化
Go runtime 调度器精讲(三):main goroutine 创建
Go runtime 调度器精讲(四):运行 main goroutine
Go runtime 调度器精讲(五):调度策略
Go runtime 调度器精讲(六):非 main goroutine 运行
Go runtime 调度器精讲(七):案例分析
Go runtime 调度器精讲(八):运行时间过长的抢占
Go runtime 调度器精讲(九):系统调用引起的抢占
Go runtime 调度器精讲(十):异步抢占
0. 前言
前面用了十讲介绍了 Go runtime 调度器,这一讲结合一些图在总览下 Go runtime 调度器。
1. 状态转换图
首先是 Goroutine 的状态转换图:
大部分转移路径前面几讲也介绍过,这里就不继续介绍了(下同)。
接着是 P 的状态转移图:
最后是线程 M 的状态转移图:
(注:上述图片均来自于公众号 [码农桃花源],饶大画的太好了,直接让人不想画了。很好的公众号,干货满满,逻辑严密,清晰,偶尔还诙谐幽默,推荐哦。)
2. GPM
2.1 GPM 工作流程
直接上图:
(这个图来自资深 Gopher 曹大,他的网站在 这里,推荐哦)
2.2 调度流程
点这里看 -> 动态演示图
(这个图和动画也来自曹大哈哈)
3. 小结
基本到这里 Go runtime 调度器精讲就介绍差不多了,希望这几讲能让大家有所收获,感谢陪伴,再见。
4. 参考资料
go语言调度器源代码情景分析
The Go scheduler
Go Wiki: Debugging performance issues in Go programs
goroutine 调度器
Go 语言高级编程
