import “runtime”
runtime包提供和go运行时环境的互操作,如控制go程的函数。它也包括用于reflect包的低层次类型信息;参见reflect报的文档获取运行时类型系统的可编程接口。
func NumCPU() int
NumCPU返回本地机器的逻辑CPU个数。
func GOMAXPROCS(n int) int
GOMAXPROCS设置可同时执行的最大CPU数,并返回先前的设置。 若 n < 1,它就不会更改当前设置。本地机器的逻辑CPU数可通过 NumCPU 查询。本函数在调度程序优化后会去掉。
package main
import (
"fmt"
"runtime"
)
func main() {
cpuNum := runtime.NumCPU()
fmt.Println("逻辑cpu个数: ", cpuNum) // 逻辑cpu个数: 12
runtime.GOMAXPROCS(cpuNum - 1)
}
go1.8 后,默认让程序运行在多个核上,可以不用手动设置
go1.8 前,需要手动设置,以便于更高效的利用cpu