Go GMP 调度模型图解:G、M、P 如何协作实现高并发
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
G(goroutine):协程任务;M(machine):操作系统线程,真正执行;P(processor):逻辑处理器,持有本地运行队列(runq)和 G 缓存。调度流程:P 从本地队列取 G 交给 M 执行;本地队列空则从全局队列或其他 P 偷取(work stealing);G 阻塞(系统调用)时 M 解绑、P 挂新 M 继续调度。GOMAXPROCS 控制 P 数量(默认 = CPU 核数)。特点:用户态协作调度 + 抢占式(1.14+ 异步抢占),高并发低开销。
回复
0 条回复