当没有设置相同名称的环境变量时,是否可以保证GOMAXPROCS设置为1?
此代码显示值:
package main
import (
"runtime"
"fmt"
)
func getGOMAXPROCS() int {
return runtime.GOMAXPROCS(0)
}
func main() {
fmt.Printf("GOMAXPROCS is %d\n", getGOMAXPROCS())
}
Run Code Online (Sandbox Code Playgroud)
并像这样运行:
$ GOMAXPROCS= go run max.go
GOMAXPROCS is 1
Run Code Online (Sandbox Code Playgroud)
显示在这种情况下它是1,但我在这里寻找一些确认.
zzz*_*zzz 29
更新2018年: 默认情况下,Go程序在GOMAXPROCS设置为可用核心数的情况下运行; 在之前的版本中,它默认为1.
从Go 1.5开始,默认值是核心数.如果您在较新的Go版本中对此不满意,则只需要明确设置它.
不,不能保证默认是什么; 即使所有已知的实现都使用值'1'.如果您的代码在没有环境变量的情况下需要特定的默认值,那么您应该在代码中设置它.另外:
GOMAXPROCS设置可以同时执行的最大CPU数并返回先前的设置.如果n <1,则不会更改当前设置.可以使用NumCPU查询本地计算机上的逻辑CPU数.当调度程序改进时,此调用将消失.
(强调我的)
从Go 1.5开始,GOMAXPROCS默认设置为可用的CPU数.但是,您可以使用GOMAXPROCS环境变量或通过调用runtime.GOMAXPROCS显式设置它.
https://docs.google.com/document/d/1At2Ls5_fhJQ59kDK2DFVhFu3g5mATSXqqV5QrxinasI/preview?sle=true
| 归档时间: |
|
| 查看次数: |
26368 次 |
| 最近记录: |