2016-05-03 42 views
0

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

#include <thread> 
#include <iostream> 

using namespace std; 

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

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

回答

1

cppreference

返回由 实现所支持的并发线程数。该值应该只被视为一个提示。支持

返回值

数量的并发线程:

和也。如果定义的值或不可计算的值 返回0。

因此thread::hardware_concurrency()不必给你任何准确的。 “精确”也在旁观者眼中。如果我有两个支持超线程的内核,应该hardware_concurrency返回24