2016-05-03 41 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