撒地方

118 阅读1分钟
代号名称定义位置作用
Sched调度器proc.c维护有存储 M 和 G 的队列以及一些调度器的状态信息
Ggoruntine 实现的核心结构runtime.h存储了goruntine的执行stack信息、goruntine状态以及goruntine的任务函数等
MMachine 系统线程runtime.h由操作系统管理的, goruntine 就是跑在 M 之上的;维护了当前执行的Goruntine、随机数发生器
PProcessor 处理器runtime.h执行 Goruntine,如果线程想运行 goruntine,必须先获取 P。维护了 Goruntine 队列,即 ruqueue。从 N:1 调度到 M:N 调度的重要部分,最多存放256个。GOMAXPROCS 设置 P 的数量,最多有 GOMAXPROCS 个线程分布在多个 CPU 上同时运行。GOMAXPROCS 也限制了并发的程度,比如 GOMAXPROCS = 核数/2,则最多利用了一半的 CPU 核进行并行。