下面的 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 關注
- 125 瀏覽
添加回答
舉報
0/150
提交
取消