同じ名前の環境変数が設定されていない場合、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であることが示されていますが、ここで確認を探しています。
UPDATE 2018:デフォルトでは、GoプログラムはGOMAXPROCSを使用可能なコアの数に設定して実行されます。以前のリリースでは、デフォルトは1でした。
Go 1.5以降、デフォルト値はコアの数です。新しいGoバージョンでこれで問題ない場合にのみ、明示的に設定する必要があります。
いいえ、デフォルトが何であるかについての保証はありません。すべての既知の実装は値「1」を使用していますが。コードに環境変数がない場合に特定のデフォルト値が必要な場合は、コードで設定する必要があります。 追加 :
GOMAXPROCSは、同時に実行できるCPUの最大数を設定し、前の設定を返します。 n <1の場合、現在の設定は変更されません。ローカルマシン上の論理CPUの数は、NumCPUで照会できます。 スケジューラが改善されると、この呼び出しはなくなります。
(エンファシス鉱山)
Go 1.5リリースノート のように
デフォルトでは、GoプログラムはGOMAXPROCSを使用可能なコアの数に設定して実行されます。以前のリリースでは、デフォルトは1でした。
Go 1.5以降では、デフォルト値はコア数になります。
Go 1.5以降、GOMAXPROCSはデフォルトで使用可能なCPUの数に設定されています。ただし、GOMAXPROCS環境変数を使用するか、runtime.GOMAXPROCSを呼び出すことにより、明示的に設定できます。
https://docs.google.com/document/d/1At2Ls5_fhJQ59kDK2DFVhFu3g5mATSXqqV5QrxinasI/preview?sle=true