【发布时间】:2013-09-28 00:32:24
【问题描述】:
我是 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() 函数,会不会导致问题?
【问题讨论】:
标签: c++ multithreading qt qthread