tyltr技术窝

本文介绍golang调度模型MPG的历史版本,以便理解MPG模型。

基本概念#

在介绍之前,先补充几个基本的盖面

GM模型#

golang1.0 版本中,调度模型是GM,没有引入P的概念。

GM模型示意图

在此模型中,只包含一个全局的可运行的队列schedtschedt包含一个指向可运行队列头指针ghead,一个指向
队列尾的gtail指针。每pop出一个g,ghead后移;每创建一个g,gtail后移。
在代码中创建一个goroutine,就会挂载到全局队列尾,gtail后移指向新goroutine

M是线程,每次从队列头获取g,进行运行。