我正在使用64位RHEL 6并在四核处理器上运行虚拟机。我编写了以下程序来检查硬件可以处理的线程数。
#include <thread>
#include <iostream>
using namespace std;
int main()
{
cout << thread::hardware_concurrency() << endl;
return 0;
}
结果始终为零,这样结果的原因是什么?
答案 0 :(得分:2)
来自cppreference:
返回支持的并发线程数 实现。该值应仅被视为提示。
还有:
返回值
支持的并发线程数。如果价值不好 已定义或不可计算,返回0.
因此thread::hardware_concurrency()
不必为您提供任何准确的信息。
&#34;准确&#34;也是在旁观者的眼中。如果我有两个支持超线程的核心,那么hardware_concurrency
应该2
还是4
?