私はMS Visual Studio 2010、C++、PPLライブラリを並列計算とQtライブラリに使用しています。C++でネストされたループ内でプログレスバーを正しく更新する方法は?
Concurrency::parallel_for (size_t(0), m_Engines.size(), [&](size_t i)
{
for (size_t j = 1;j <= m_Iterations;j++)
{
Compute(i);//some time-cosuming thing
}
});
m_Iterations
の3つの独立したエンジンがあるとしましょう。 各エンジンの進捗バーは次のようになります。
進捗状況1:|||||||
進捗状況2:|||||
進捗状況3:|||||||||
総進行:(これらのうち最小値を示す)の後方プログレスバーを示す
そして、私は(代わりに、上に示したの)単一のプログレスバーを有するたい|||||
QProgressBar * pProgressbar
,CoreApplication::processEvents()
「コードスニペット」があるとします。同時実行ランタイム技術を使用して、内部ループ用の単一のプログレスバーの考え方を実装するには、コードをどのように変更する必要がありますか。
なぜ3の平均値ではなく最小値を表示したいですか? –
100%進捗とは、すべてのタスクが完了したことを意味します。 – ilya
この場合、おそらく0から 'm_Iterations * 3'に進む進捗バーが必要であり、すべてのエンジンで完了した反復の合計を表示する必要があります。 – Vlad