Go 语言之所以能够轻松支持百万级并发,其核心就在于它的调度器模型——GMP 模型。 GMP 是 Go 运行时(Runtime)调度层面的三个核心组件的缩写:G (Goroutine)、M (Machine)、P (Processor)。 下面我将从概念、模型演变、核心策略和工作流程四个方面深入浅出地为你讲解。 --- 1. 核心组件介绍 (G、M、P) 你可以把 GMP 模型想象成一个建筑工地: G (Goroutine - 协程/任务): 概念:Go 语言中的协程,用户级线程。 特点:非常轻量(初始栈仅 2KB),由 Go 运行时管理,而非操作系统。 比喻:“砖头”或“任务单”。这是具体要干的活。 M (Machine - 内核线程): 概念:操作系统内核线程(OS Thread)。 特点:它是真正执行计算资源的载体。M 必须绑定 P 才能执行 G。 比喻:“建筑工人”。只有工人才能真正动手搬砖。 P (Processor - 处理器/上下文): 概念:逻辑处理器,包含了运行 G 所需的资源(如本地队列、内存分配器等)。 特点:P 的数量决定了系统最大并行度,由 决定。 作用...