MPG
M —主线程 P—协程执行所需上下文 G—协程
状态1: 1)有三个M,作用在同一个cpu并发,作用在多个cpu为并行 2)Go协程是轻量级的,可以很容易起上万个协程 状态2: M0在运行G0时被阻塞,会创建另一个M1主线程,将其余的G1,G2挂到M1下面
设置Cpu数目
package main
import(
"runtime"
"fmt"
)
func main(){
cpuNum
:= runtime
.NumCPU()
fmt
.Println("cpuNum = ", cpuNum
)
runtime
.GOMAXPROCS(cpuNum
-1)
}
知识点:runtime包,以及runtime.NumCPU()查看本机上有几个CPU,runtime.GOMAXPROCS(int)设置几个CPU go1.8版本之后默认程序在多核上使用