Golang-goroutine02(MPG模式+設定CPU數目)

BooM十五億船長發表於2020-10-08

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()
	//看有多少個CPU
	fmt.Println("cpuNum = ", cpuNum)
	//自己設定使用幾個cpu
	runtime.GOMAXPROCS(cpuNum-1)
}

知識點:runtime包,以及runtime.NumCPU()檢視本機上有幾個CPU,runtime.GOMAXPROCS(int)設定幾個CPU
go1.8版本之後預設程式在多核上使用

相關文章