我是 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() 函数,它会导致问题吗?