runtime.GOMAXPROCS无法按预期工作

时间:2017-10-27 11:33:54

标签: multithreading go taskaffinity

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

process using 2 cpu cores

有时也会使用3-4个核心。

对此有何想法?

谢谢。

1 个答案:

答案 0 :(得分:2)

您正在运行四个进程。内核将这些内容安排到内核上。 GOMAXPROCS与此无关;它只影响单个进程的线程数,而只影响用户级代码。