Я хочу сделать условие в коде ждать, пока все нити не будут закончены в основной нити конечного интервала, следующее тестовый код ..Подождите, пока все нити не будут закончены в основном потоке с использованием Qt/C++
testClass::testClass()
{
m_count = 0;
m_flag = false;
for(int i = 0; i < 3; i++)
{
QThread *thread = new QThread();
WorkerThread *worker = new WorkerThread();
connect(thread, SIGNAL(started()), worker, SLOT(startThread()));
connect(worker, SIGNAL(workerFinished()), this, SLOT(threadFinished()));
connect(worker, SIGNAL(workerFinished()), thread, SLOT(quit()));
connect(thread, SIGNAL(finished()), worker, SLOT(deleteLater()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
m_workerList.append(worker);
}
}
void testClass::threadFinished()
{
// wait untill all thread are finished, how to achive this ?
if(!m_flag)
{
// print << m_flag;
m_flag = true;
}
}
void WorkerThread::startThread()
{
emit workerFinished();
}
здесь testClass находится в основном потоке, и я хочу, чтобы приложение ждало в threadFinished слот до тех пор, пока все потоки, которые я начал в конструкторе testClass, не смогли бы предложить лучший способ сделать это?
Я использую Qt 5.4.0 в ОС Windows 7.
Не можете ли вы просто 'wait()' на всех потоках? –