使主线程等待,直到所有其他结束的QThread(Making the main thread wai

2019-07-21 06:51发布

有没有办法迫使主线程等待,直到从中创建的所有线程,将完成他们的工作,整理程序之前。 我的意思是:

int main(){
    QthreadClass a; // in cons' a thread is created and running
    QthreadClass b; // same as before

    *** wish to wait till both created thread finished their jobs ***

    return 0;

}

Answer 1:

那么,怎么样:

a.wait();
b.wait();

或者,你宁愿启动退出当两个你的线程结束的事件循环(如通常是Qt应用程序)(QThread的发射完成()和终止()信号)。



Answer 2:

通常情况下,使用Qt,你将有与信号和槽的事件循环基于的QApplication类,将从主功能不会退出,直到你想。 在这种情况下,你可以的QThread ::结束()信号只需连接,检查是否所有线程都做了槽。

如果没有一个事件循环和信号/插槽,Qt的线程没有join()方法,在其他线程执行中,但的QThread :: wait()有几分相似。

bool QThread::wait(unsigned long time = ULONG_MAX)

阻塞线程,直到这些条件得到满足:

  • 与此相关的线程QThread对象已完成执行(即当它从返回QThread::run() )。 该函数将返回true如果线程完成。 它还返回true如果线程尚未启动。
  • time毫秒已过。 如果时间ULONG_MAX (默认值),然后等待将永远不会超时(线程必须从返回QThread::run() )。 该函数将返回false ,如果等待超时。


文章来源: Making the main thread wait till all other Qthread finished
标签: c++ qthread