thread::hardware_concurrency()检查返回零值

thread::hardware_concurrency() checking returns zero value

本文关键字:检查 返回 hardware concurrency thread      更新时间:2023-10-16

我使用的是RHEL 6 64位,在四核处理器上的虚拟机上运行。我编写了以下程序来检查硬件可以处理的线程数。

#include <thread>
#include <iostream>
using namespace std;
int main()
{
    cout << thread::hardware_concurrency() << endl;
    return 0;
}

结果总是为零,是什么原因导致这样的结果?

来自cppreference:

返回实施该值应仅被视为一个提示。

以及:

返回值

支持的并发线程数。如果值不正确已定义或不可计算,返回​0​.

所以thread::hardware_concurrency()不必给你任何准确的信息
"准确"也在旁观者眼中。如果我有两个支持超线程的核心,hardware_concurrency应该返回2还是4