Go 并发原理
Go 语言优先通过 CSP(Communicating Sequential Process) 方式 即通信顺序进程
CSP 模型 Go 语言中的CSP是通过goroutine 和channel 实现的.goroutine 可以理解成为协程,是Go语言中并发编程的基本单位.goroutine彼此之间通过channel进行数据传递
提示
goroutine channel goroutine
GMP 模型简介
- M: machine 一个M关联一个内核线程
- P: process 用户代码上的处理器,是M和G调度 所需要的上下文,P的数量由GOMAXPROCS绝对的,默认是CPU的核心数
- G: goroutine 是运行在运行时的绿色线程之上的轻量级线程
信息
P在运行的过程中还起着负载均衡的作用,一旦自己的goroutine队列运行完毕,还会去找其他的P的队列,会从其他队列分一部分过来。