我有一个简单的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
我不知道为什么即使
GOMAXPROCS
设置为1,该简单程序也使用2个不同的内核(1和6)。有时也使用3-4核。
有什么想法吗?
谢谢。
最佳答案
您正在运行四个进程。内核将它们调度到内核上。 GOMAXPROCS与此无关。它仅影响单个进程的线程数,并且仅影响用户级代码。
关于multithreading - runtime.GOMAXPROCS无法按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46974078/