web-dev-qa-db-ja.com

GOMAXPROCSのデフォルト値は何ですか

同じ名前の環境変数が設定されていない場合、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であることが示されていますが、ここで確認を探しています。

32
mnagel

UPDATE 2018:デフォルトでは、GoプログラムはGOMAXPROCSを使用可能なコアの数に設定して実行されます。以前のリリースでは、デフォルトは1でした。

Go 1.5以降、デフォルト値はコアの数です。新しいGoバージョンでこれで問題ない場合にのみ、明示的に設定する必要があります。


いいえ、デフォルトが何であるかについての保証はありません。すべての既知の実装は値「1」を使用していますが。コードに環境変数がない場合に特定のデフォルト値が必要な場合は、コードで設定する必要があります。 追加

GOMAXPROCSは、同時に実行できるCPUの最大数を設定し、前の設定を返します。 n <1の場合、現在の設定は変更されません。ローカルマシン上の論理CPUの数は、NumCPUで照会できます。 スケジューラが改善されると、この呼び出しはなくなります。

(エンファシス鉱山)

27
zzzz

Go 1.5リリースノート のように

デフォルトでは、GoプログラムはGOMAXPROCSを使用可能なコアの数に設定して実行されます。以前のリリースでは、デフォルトは1でした。

Go 1.5以降では、デフォルト値はコア数になります。

34
laike9m

Go 1.5以降、GOMAXPROCSはデフォルトで使用可能なCPUの数に設定されています。ただし、GOMAXPROCS環境変数を使用するか、runtime.GOMAXPROCSを呼び出すことにより、明示的に設定できます。

https://docs.google.com/document/d/1At2Ls5_fhJQ59kDK2DFVhFu3g5mATSXqqV5QrxinasI/preview?sle=true

8
Khan