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

时间:2016-05-03 09:42:43

标签: c++ multithreading threadpool

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

#include <thread>
#include <iostream>

using namespace std;

int main()
{
    cout << thread::hardware_concurrency() << endl;
    return 0;
}

结果始终为零,这样结果的原因是什么?

1 个答案:

答案 0 :(得分:2)

来自cppreference

  

返回支持的并发线程数   实现。该值应仅被视为提示。

还有:

  

返回值

     

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

因此thread::hardware_concurrency()不必为您提供任何准确的信息。
&#34;准确&#34;也是在旁观者的眼中。如果我有两个支持超线程的核心,那么hardware_concurrency应该2还是4