
GMP调度模型
文章平均质量分 96
xjx
不入流的大龄码农一枚
展开
-
GO调度模型-GMP(下)
集齐各部分理论碎片之后,我们可以尝试对 的宏观调度流程进行整体串联,开始进入到调度函数, 此时的执行权位于 手中: 分析代码,我们去掉一些非关键的逻辑和问题,总结起来该函数流程就两个:下面对这两个函数进行重点分析。调度流程中,一个非常核心的步骤,就是为 寻找到下一个执行的 ,这部分内容位于函数 方法中,该函数非常冗长,为了寻找一个可用的,真是用心良苦,我们看下源码分析: 综合代码,来总结下流程:总结起来就是各种办法找,到最后还不死心,在能找的地方再找一次。其流程图如下:下面来根据 函数,来看看调度原创 2023-11-28 17:22:02 · 698 阅读 · 0 评论 -
GO调度模型-GMP(上)
首先我们要先了解g0和m0,首先要了解什么是g0和m0g0 g可以看出m0和g0都是全局变量,分别对应着m结构体和g结构体, 但是他们和普通的g和m还是有着区别的。m0启动程序后的编号为0的主线程,如果进程中不开任何线程,可以理解为一个进程就是一个线程;定义在全局变量runtime.m0中,不需要在heap(堆)上分配;负责执行初始化操作和启动第一个gg0启动第一个g之后,m0就和其他的m一样了( 负责给其他m进行抢占 )。每次启动一个m,都会第一个创建的goroutine,就是g0g0。原创 2023-11-15 10:39:53 · 719 阅读 · 0 评论