Golang cpu的使用设置--GOMAXPROCS

以下测试,使用的Go版本是1.8.3
不设置 如果没有调用runtime.GOMAXPROCS 去设置CPU,Golang默认使用所有的cpu核。
测试机器CPU有4个核,测试代码开启4个goroutine,从测试结果看4个核心全部跑满。
测试代码如下:

package mainfunc main(){ go task() go task() go task() go task() select{}}func task(){ for { }}

设置CPU使用
func GOMAXPROCS(n int) int

GOMAXPROCS sets the maximum number of CPUs that can be executing simultaneously and returns the previous setting. If n < 1, it does not change the current setting.
设置并发执行时使用的CPU的数目
例如,设置只使用1个核心
runtime.GOMAXPROCS(1)

设置只使用2个核心
runtime.GOMAXPROCS(2)

测试代码如下,只设置一个核心:
package mainimport ( "runtime" )func main(){ runtime.GOMAXPROCS(1) go task() go task() go task() go task() select{} }func task(){ for { } }

有时候,我们常用到:
runtime.GOMAXPROCS(runtime.NumCPU())
func NumCPU() int NumCPU returns the number of logical CPUs usable by the current process.

函数返回当前进程可用的逻辑CPU数目
目前测试下来,使用这个设置CPU,效果和不调用GOMAXPROCS效果一样,就是使用所有的CPU核心数。
2020.1.1 补充更新 最新测试结果:
测试机器:MAC CPU 8核
版本:go version go1.13 darwin/amd64
1.不使用GOMAXPROCS 设置CPU
8 个goroutine,可以跑满8个核, CPU使用最高达到800%
2.使用GOMAXPROCS 设置CPU
8 个goroutine
- 设置只使用1个核, CPU使用最高达到100%
- 设置只使用2个核,CPU使用最高达到200%
【Golang cpu的使用设置--GOMAXPROCS】也就是说GOMAXPROCS可以用来设置程序使用的最多CPU核数。

    推荐阅读