Go 语言并发哲学:Goroutine 调度模型(GMP)与 Channel 底层剖析
Go 语言之所以在云原生时代一骑绝尘,其极度轻量的并发机制功不可没。
- G (Goroutine):初始仅 2KB 栈空间,按需自动动态扩容;
- M (Machine):绑定真正的系统内核线程;
- P (Processor):逻辑处理器,持有本地可运行队列,负责上下文切换与工作窃取(Work Stealing);
- Channel:加锁的环形缓冲区(
hchan),通过等待队列与挂起调度实现优雅的协程通信。
不要通过共享内存来通信,而要通过通信来共享内存。