golang中runtime.GOMAXPROCS

632 阅读1分钟

golang进程权限调度包runtime三大函数:

1)Gosched:让出cpu时间片,让出当前goroutine的执行权限,调度器安排其它等待的任务运行,在下次某个时候从该位置恢复执行

2)Goexit:立即终止当前goroutine,终止前会先执行defer语句,不能再主函数调用run.Goexit,否则会panic

3)GOMAXPROCS:用来设置可以并行计算的cpu核数最大值,并返回之前的值,默认值和cpu逻辑个数相同

func maxProcsTest() {
	fmt.Println(runtime.GOMAXPROCS(1))
	//fmt.Println(runtime.GOMAXPROCS(4))

	go func() {
		for i := 1; i <= 5; i++ {
			fmt.Println("111", i)
		}
	}()

	go func() {
		for i := 1; i <= 5; i++ {
			fmt.Println("222", i)
		}
	}()

	go func() {
		for i := 1; i <= 5; i++ {
			fmt.Println("333", i)
		}
	}()

	time.Sleep(3* time.Second)
}

输出:

windows查看cpu核数和逻辑cpu个数