我设计了一个运行20个线程实例的应用程序.
for(int i = 0;i<20;i++)
{
threadObj[i].start();
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能在主线程中等待这20个线程完成?
你需要使用QThread::wait()
.
bool QThread :: wait(unsigned long time = ULONG_MAX)
阻止线程,直到满足以下任一条件:
与此QThread对象关联的线程 已完成执行(即从run()返回时 ).如果线程已完成,此函数将返回true.如果线程尚未启动,它也会返回true.
时间毫秒已过.如果时间是 ULONG_MAX(默认值),则等待直到永不超时(线程必须从run()返回).如果等待超时,此函数将返回false.
这提供了与POSIX pthread_join()函数类似的功能.
只需循环遍历线程并为每个线程调用wait().
for(int i = 0;i < 20;i++)
{
threadObj[i].wait();
}
Run Code Online (Sandbox Code Playgroud)
如果你想在等待时让主循环运行.(例如,处理事件并避免使应用程序不负责任.)您可以使用线程的信号和插槽.QThread有一个完成的()单声道,你可以连接到一个插槽,记住哪些线程已经完成.
归档时间: |
|
查看次数: |
10507 次 |
最近记录: |