下面的 UNIX 命令:$ lscpuArchitecture: x86_64CPU op-mode(s): 32-bit, 64-bitByte Order: Little EndianCPU(s): 4On-line CPU(s) list: 0-3Thread(s) per core: 2Core(s) per socket: 2Socket(s): 1显示, CPU(s): 4 Thread(s) per core: 2这是 4 X 2 = 8 个逻辑处理器。纠正我。下面是另一个 Linux 命令:$ cat /proc/cpuinfoprocessor : 0....cpu cores : 2.....processor : 1.....cpu cores : 2.....processor : 2.....cpu cores : 2.....processor : 3.....cpu cores : 2.....$ 但是下面的程序只显示了 4 个逻辑处理器:package mainimport ( "fmt" "runtime")func main() { fmt.Println(runtime.GOMAXPROCS(0)) // gives 4 fmt.Println(runtime.NumCPU()) // gives 4 }输出:$ go install github.com/myhub/cs61a$ bin/cs61a 44code$ 更多细节:$ go versiongo version go1.14.1 linux/amd64$ uname -aLinux mohet01-ubuntu 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux文档说,NumCPU 返回当前进程可用的逻辑 CPU 数量。我的理解是,Go 调度程序创建操作系统线程(M),这将等同于逻辑处理器的数量。为什么运行时 api 没有给出 8 的值?
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报
0/150
提交
取消