import “runtime”

runtime包提供和go运行时环境的互操作,如控制go程的函数。它也包括用于reflect包的低层次类型信息;参见reflect报的文档获取运行时类型系统的可编程接口。

func NumCPU() int
NumCPU返回本地机器的逻辑CPU个数。
func GOMAXPROCS(n int) int
GOMAXPROCS设置可同时执行的最大CPU数,并返回先前的设置。 若 n < 1,它就不会更改当前设置。本地机器的逻辑CPU数可通过 NumCPU 查询。本函数在调度程序优化后会去掉。

  1. package main
  2. import (
  3. "fmt"
  4. "runtime"
  5. )
  6. func main() {
  7. cpuNum := runtime.NumCPU()
  8. fmt.Println("逻辑cpu个数: ", cpuNum) // 逻辑cpu个数: 12
  9. runtime.GOMAXPROCS(cpuNum - 1)
  10. }

go1.8 后,默认让程序运行在多个核上,可以不用手动设置
go1.8 前,需要手动设置,以便于更高效的利用cpu