详细介绍Golang的GPM调度器,包括底层源码及其实现,以及一些相关的补充知识。
3条回答 默认 最新
- 好评笔记 2025-02-01 20:25关注
前情提要
并发与并行
并行 (Parallel)
并发 (Concurrency)
关键区别
进程和线程的区别
协程
解决的问题
协程的优势
Go的并发模型-CSP
Go的调度模型-GPM源码
Goroutine
g 结构体
stack结构体
gobuf结构体
schedt结构体
Processor
p结构体
重要的全局变量
Machine
M 和 G 的关系
M 和 P 的关系
Go的调度模型-流程
PM绑定
创建G并加入P的私有队列
P的私有队列满,加入G对应的全局队列
M通过P消费G
没有可执行的G,M和P断开绑定
其他情况
G被阻塞
P随M进入系统调用
监控线程sysmon
runtime
包及相关功能runtime.Gosched()
runtime.Goexit()
runtime.GOMAXPROCS(n int)
runtime.NumGoroutine()
GMP 限制分析
M 的限制
G 的限制
P 的限制
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/haopingbiji/article/details/145378072
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用