为了账号安全,请及时绑定邮箱和手机立即绑定

什么是 GOMAXPROCS 默认值

什么是 GOMAXPROCS 默认值

Go
慕沐林林 2021-06-13 22:02:30
不设置同名环境变量时,是否保证GOMAXPROCS设置为1?此代码显示值:package mainimport (    "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,但我在这里寻找一些确认。
查看完整描述

3 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

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

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


不,无法保证默认值是什么;即使所有已知的实现都使用值“1”。如果您的代码在没有环境变量的情况下需要特定的默认值,那么您应该在代码中设置它。另外

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

(强调我的)


查看完整回答
反对 回复 2021-06-21
?
青春有我

TA贡献1784条经验 获得超8个赞

正如Go 1.5 发行说明所说

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

所以从 Go 1.5 开始,默认值应该是核心数


查看完整回答
反对 回复 2021-06-21
  • 3 回答
  • 0 关注
  • 492 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信