跳到主要内容

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的队列,会从其他队列分一部分过来。