2026-06-07 11:08:10 +08:00
|
|
|
|
---
|
2026-06-07 12:14:39 +08:00
|
|
|
|
tags: [go, golang, go-principle, gmp-scheduler]
|
|
|
|
|
|
create time: 2026-06-07 15:50
|
2026-06-07 11:08:10 +08:00
|
|
|
|
---
|
|
|
|
|
|
|
2026-06-07 12:14:39 +08:00
|
|
|
|
# GMP 调度原理
|
2026-06-07 11:08:10 +08:00
|
|
|
|
|
2026-06-07 12:14:39 +08:00
|
|
|
|
## 概述
|
|
|
|
|
|
|
2026-06-07 16:52:15 +08:00
|
|
|
|
本文从宏观架构到微观源码,全方位解析 Go 的 GMP 调度模型。由于内容较长,已拆分为以下子文档,建议按顺序阅读。
|
2026-06-07 12:14:39 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
2026-06-07 11:08:10 +08:00
|
|
|
|
|
2026-06-07 16:52:15 +08:00
|
|
|
|
### 阅读顺序
|
2026-06-07 11:08:10 +08:00
|
|
|
|
|
2026-06-07 16:52:15 +08:00
|
|
|
|
| # | 文档 | 涵盖内容 | 适合阶段 |
|
|
|
|
|
|
|---|------|----------|----------|
|
|
|
|
|
|
| 1 | [[hzh/GolangStar/Go语言原理/gmp调度原理/gmp-overview]] | G/M/P 角色、LRQ/GRQ 队列、work-stealing、GMP 生态圈 | 入门建立全局视图 |
|
|
|
|
|
|
| 2 | [[hzh/GolangStar/Go语言原理/gmp调度原理/gmp-datastructures]] | G/M/P/schedt 结构体源码逐字段解析 + 状态机 | 深入理解底层布局 |
|
|
|
|
|
|
| 3 | [[hzh/GolangStar/Go语言原理/gmp调度原理/gmp-lifecycle]] | goroutine 创建流程 → findRunnable 调度 → 三种让渡方式(结束/Gosched/gopark) | 追踪完整生命周期 |
|
|
|
|
|
|
| 4 | [[hzh/GolangStar/Go语言原理/gmp调度原理/gmp-preemption]] | sysmon 线程、系统调用抢占、协作式与非协作式抢占 | 理解强制干预机制 |
|
|
|
|
|
|
| 5 | [[hzh/GolangStar/Go语言原理/gmp调度原理/gmp-summary]] | 全景流程图 + 核心要点速查表 | 复习回顾 / 面试准备 |
|