GPM 是什么
2020-03-30
G、P、M 是 Go 调度器的三个核心组件,各司其职。在它们精密地配合下,Go 调度器得以高效运转,这也是 Go 天然支持高并发的内在动力。今天这篇文章我们来深入理解 GPM 模型。
1008 字
|
5 分钟
参考资料
2020-03-30
上一讲我们讲完了 Go scheduler 的初始化,现在调度器一切就绪,就差被调度的实体了。本文就来讲述 main goroutine 是如何诞生,并且被调度的。
1058 字
|
5 分钟
参考资料
2020-03-30
上一讲新创建了一个 goroutine,设置好了 sched 成员的 sp 和 pc 字段,并且将其添加到了 p0 的本地可运行队列,坐等调度器的调度。
1008 字
|
5 分钟
参考资料
2020-03-30
上一节,我们讲完 main goroutine 以及普通 goroutine 的退出过程。main goroutine 退出后直接调用 exit(0) 使得整个进程退出,而普通 goroutine 退出后,则进行了一系列的调用,最终又切到 g0 栈,执行 schedule 函数。
873 字
|
4 分钟
抢占进行系统调用的 P
2020-03-30
在 runtime.main() 函数中,执行 runtimeinit() 前,会启动一个 sysmon 的监控线程,执行后台监控任务:
2840 字
|
14 分钟