require('os').cpus().length 返回 24 .... 无法理解怎么办?

use*_*957 4 concurrent-programming node.js

我有一个具有以下配置的 Windows 桌面:Intel Xeon(R) CPU E5645 @2.40GHz(2 个处理器),
具有 24 GB RAM 和 64 位操作系统

当我运行以下代码时。

var cpuCount = require('os').cpus().length;
Run Code Online (Sandbox Code Playgroud)

它返回 cpuCount 为 24

有人可以解释一下这到底是什么意思吗?它如何确定我有 24 个 CPU 而只有 2 个处理器。

sch*_*fkt 5

http://ark.intel.com/products/48768/Intel-Xeon-Processor-E5645-12M-Cache-2_40-GHz-5_86-GTs-Intel-QPI?q=Xeon%20e5645

先进技术部分。说明你的CPU支持超线程

来自维基百科:

对于物理上存在的每个处理器核心,操作系统寻址两个虚拟或逻辑核心......

因此,您有两个处理器,每个处理器有 6 个物理核心(但有 12 个逻辑或虚拟核心):

(2 x 6) x 2 = 24

另请查看 node.js文档

操作系统.cpus()

返回一个对象数组,其中包含有关安装的每个 CPU/核心的信息:型号、速度(以 MHz 为单位)和时间(包含 CPU/核心花费的毫秒数的对象:user、nice、sys、idle 和 irq) 。

这就是为什么 by 返回的数组require('os').cpus()包含 24 个元素。