runtime.GOMAXPROCS не работает должным образом
У меня есть простая программа Go -
main.go -
package main
import (
"log"
"runtime"
"time"
)
func main() {
runtime.GOMAXPROCS(1)
log.Println("running")
time.Sleep(10 * time.Minute)
}
Я строю двоичный файл, как это -
GOOS=linux go build
и запустить его в машине Centos -
# ./test
2017/10/27 14:20:15 running
Интересно, почему для этой простой программы используются 2 разных ядра (1 и 6), даже если GOMAXPROCS
установлено на 1.
Иногда 3-4 ядра также используются.
Есть идеи по этому поводу?
Спасибо.
1 ответ
Вы запускаете четыре процесса. Ядро распределяет их по ядрам. GOMAXPROCS не имеет к этому никакого отношения; это влияет только на количество потоков для одного процесса и только на пользовательский код.