【发布时间】:2015-07-14 09:36:55
【问题描述】:
我知道如何获取 C 中的逻辑核心数。
sysconf(_SC_NPROCESSORS_CONF);
这将在我的 i3 处理器上返回 4。但实际上 i3 中只有 2 个内核。
我如何获得物理核心数?
【问题讨论】:
-
处理器代码是什么?许多英特尔每个物理内核有 2 个逻辑内核。您可以在英特尔电子表格中获得更多信息
-
@gengisdave 有什么方法可以让我用 c 语言获取物理内核的数量吗?
-
我不知道 C 的解决方案,在 C++ 中你可以使用
boost::thread::physical_concurrency() -
很可能
sysconf(_SC_NPROCESSORS_CONF)返回线程总数(超线程线程),而不是物理内核。 -
boost 有两种方法,在 C 中你必须解析
/proc/cpuinfo(cpu cores :行)或使用 libcpuid