2

最適化メソッドへの呼び出しを並列化するメソッドで 3 つの並列スレッド (および現在のスレッド) を実行します。コードは次のようになります

 for(i=0;i<m+1;i++)
{ // run algorithms
    solverParallelData* parallelData = new solverParallelData(this); 

    for(j=0;j<m_ndim;j++) 
    {
        initPt[j] = initPts[i][j];
    }

    parallelData->runOptim(initPt);
    dataList.append(parallelData);
}

// retrieve results
solverParallelData *parallelDataRes;

try 
{
    for(int i = 0; i < dataList.size(); i++) 
    {
        parallelDataRes = dataList.at(i);

        int output = parallelDataRes->resultOptim();

              /*...*/
      }

ここで、resultOptim() は、solverParallelData 内のメソッドであり、単に QFuture result() を呼び出します。dataList は適切に入力されているようです。ただし、ライン

  int output = parallelDataRes->resultOptim();

識別できない未処理の例外が発生します。以前は、同時アクセスに問題があり、QMutex クラスでプログラムがクラッシュしました。今はソースが違うと思いますが、何が悪いのかわかりません。

ありがとうございます。

4

0 に答える 0