私はLinux上でg ++コンパイラを使用しています(仮想ボックスのubuntu)。私は、作成後にstd :: threadsに正しく参加するよう呼びかけています。 doは一度に始まるように見えますが、次々と終了します。合計実行時間は、シングルスレッド時間のn倍です。私はpthreadsでこの問題が表示されません。 Pthreadsは完全にスケールされ、実行時間はシングルスレッド時間の(1/n)倍です。linux/macで並列実行していないC++スレッド
Mac OS上でclang ++コンパイラと同じ動作を観察しました。
std :: threadは、 'join'が呼び出されたときにのみ実行できますか?私はstd :: threadコンストラクタでパラメタを渡す必要がありますか?パラレルで実行するように強制しますか? C++ 11のドキュメントを検索し、明らかな理由が見つからなかった。
何か助けていただければ幸いです。
[MCVE](http://stackoverflow.com/help/mcve)? –
標準では、 'std :: thread 'の別々のインスタンスを並列に実行する必要はなく、パラレルで実行する_possibility_を提供するだけです。メインスレッドで寝てみて、何が起こるかを見てください。 – Tim
いつ 'join()'を呼びますか? 「作成後」と呼んだ場合、呼び出しスレッドは新しく作成されたスレッド完了を待つように強制します。 –