-1

並列計算には MS Visual Studio 2010、C++、PPL ライブラリ、Qt ライブラリを使用しています。

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           
    }
});

それぞれに 3 つの独立したエンジンがあるとm_Iterationsします。各エンジンの進行状況バーは次のようになります。

進行状況 1: ||||||||

進行状況 2: |||||

進行状況 3: |||||||||||

そして、後方のプログレスバー(それらの中で最小の値を示す)を示す単一のプログレスバー(上記の代わりに)が必要です:

合計進行状況: |||||

「コードスニペット」がQProgressBar * pProgressbarあると仮定しましょう。CoreApplication::processEvents()コンカレンシー ランタイムの手法を使用して、内側のループに単一の進行状況バーのアイデアを実装するには、コードをどのように変更すればよいでしょうか。

4

1 に答える 1

1

最小時間を表示するには、関数の側で QWaitCondition を使用するか、別の関数を記述して 1 つの m_Iterations の終了を通知することができます。現在、3 つの並列計算エンジンを実行していると仮定して、QWaitCondition を記述して、他の反復がそのジョブを実行することを通知します。

于 2012-05-03T07:03:33.130 に答える