2016-05-03 4 views
0

私はRHEL 6 64ビットを使用しており、クアッドコアプロセッサで仮想マシンを実行しています。ハードウェアが処理できるスレッドの数を調べるために、次のプログラムを書いた。スレッド:: hardware_concurrency()チェックでゼロの値が返される

#include <thread> 
#include <iostream> 

using namespace std; 

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

結果は常にゼロですが、そのような結果の理由は何ですか? cppreferenceから

答えて

1

は 実装によってサポートされる同時スレッドの数を返します。値はヒントとしかみなされません。

とも:同時スレッドの

戻り値

数がサポートされています。値が正しく定義されていないか計算できない場合は0を返します。

だからthread::hardware_concurrency()は正確なものを与える必要はありません。
「正確」はまた、見る人の目にも見えます。ハイパースレッディングをサポートする2つのコアがある場合、hardware_concurrency2または4に戻る必要がありますか?

関連する問題