深入理解 Go | 调度:GMP 模型(第一部分)

以下基于 Go 1.14



Golang 中的调度是基于 GMP 模型来实现的:

  • G:表示 Goroutine,一个待执行的任务。
    • 它对于 Go 运行时调度可以看做线程对于操作系统调度
    • 在 Go 语言中使用 runtime.g 结构表示
  • M:表示操作系统线程,由操作系统调度以及管理
    • 调度器最多可以创建 10000 个线程,最多只会有 GOMAXPROCS 个活跃活跃线程
    • 在 Go 语言中使用 runtime.m 结构表示
  • P:表示处理器
    • Go 程序的处理器数量一定是 GOMAXPROCS 个,在调度器启动的时候就会创建
    • 在 Go 语言中使用 runtime.p 结构表示

一些全局变量说明:



附:数据结构



请言小午吃个甜筒~~