一尘不染

GOMAXPROCS的默认值是多少

go

当未设置相同名称的环境变量时,是否可以确保将GOMAXPROCS设置为1?

此代码显示值:

package main

import (
    "runtime"
    "fmt"
)

func getGOMAXPROCS() int {
    return runtime.GOMAXPROCS(0)
}

func main() {
    fmt.Printf("GOMAXPROCS is %d\n", getGOMAXPROCS())
}

并像这样运行它:

$ GOMAXPROCS= go run max.go 
GOMAXPROCS is 1

显示在这种情况下为1,但我在这里寻找一些确认。


阅读 883

收藏
2020-07-02

共1个答案

一尘不染

UPDATE 2018: 默认情况下,Go程序在将GOMAXPROCS设置为可用内核数的情况下运行;在以前的版本中,它默认为1。

从Go 1.5开始,默认值为核心数。如果您在较新的Go版本中对此不满意,则只需要显式设置即可。


不,不能保证默认值是多少。即使所有已知的实现都使用值“
1”。如果您的代码在没有环境变量的情况下需要特定的默认值,则应在代码中进行设置。另外

GOMAXPROCS设置可以同时执行的最大CPU数,并返回以前的设置。如果n
<1,则不会更改当前设置。可以使用NumCPU查询本地计算机上的逻辑CPU数量。 调度程序改进后,此呼叫将消失。

(强调我的)

2020-07-02