QThread とマルチスレッドは初めてなので、正しく実行しているかどうかわかりません。プログラムは今のところクラッシュしていませんが、正しく実行できているかどうかを確認したいと思います。次のようなコードがあります (MyThreadClass は QThread から継承されます)。
std::vector<MyThreadClass* > workThreads;
for(int i=0;i<Solutions.size();i++)
{
workThreads.push_back(new MyThreadClass(Solutions[i]));
}
for(int i=0;i<workThreads.size();i++)
{
connect(workThreads[i], SIGNAL(finished()), this, SLOT(onFinished()));
workThreads[i]->start();
}
bool finished = false;
while(!finished)
{
if(m_finishedThread==workThreads.size())
finished=true;
this->msleep(10);
}
onFinished 関数は次のように指定されます。
void MyClass::onFinished()
{
++m_finishedThread;
}
したがって、while ループはすべてのスレッドが終了し、m_finishedThread 変数を更新するのを待っていることがわかります。これは安全な方法ですか?すべてのスレッドがジョブを終了し、onFinished() 関数に「接続」しようとすると、問題が発生しますか?