我有一个简单的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)。

multithreading - runtime.GOMAXPROCS无法按预期工作-LMLPHP

有时也使用3-4核。

有什么想法吗?

谢谢。

最佳答案

您正在运行四个进程。内核将它们调度到内核上。 GOMAXPROCS与此无关。它仅影响单个进程的线程数,并且仅影响用户级代码。

关于multithreading - runtime.GOMAXPROCS无法按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46974078/

10-12 00:26