私はこのような一般的なタイトルを赦免します。
OpenGLを使用して3Dでデータを表示する物理シミュレーションアプリケーションを作成しています。重い計算を担当する関数の1つが、パフォーマンスを少し下げているようです。私は数秒間アプリケーションをフリーズせずに "バックグラウンドで"やりたいと思っています。しかし、私の場合、std :: threadは動作しないようです。
私がスレッドしようとしている関数は、その中に多くの計算を持っています。ここでいくつかのメモリが割り当てられ、他の関数が呼び出され、クラスが使用されます。しかし、私が直接DoSomethingSeriousと呼ばれているかのように、それがゼロに効果があることが表示されますアマチュアはstd :: threadの使い方を理解できません
void WrapperFunction(void)
{
std::thread t(DoSomethingSerious);
t.join();
}
:私はスレッドを起動しようと、そこからラッパー関数を、作成しました。 何が問題なのでしょうか?先に進む前に、終了するスレッドの
はたぶん(::のstd ::スレッド 'をよく読んで参加)':あなたがスレッドを開始し、
join()
を行うとの中間のアクションを持っている場合、あなたはに効果に気づくはずです。 – juanchopanza
't.join();'は、スレッドが次の行に進む前に完了するのを待っています。 –