簡體   English   中英

使主線程等到所有其他Qthread完成

[英]Making the main thread wait till all other Qthread finished

有沒有辦法強制主線程等到從它創建的所有線程完成他們的工作,然后才能完成程序。 我的意思是:

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;

}

那么,怎么樣:

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

或者,您寧願啟動一個事件循環(通常用於Qt應用程序),當兩個線程結束時(QThread發出finished()和terminate()信號),您將退出。

通常,使用Qt,您將擁有一個基於QApplication的類,其中包含帶有信號和插槽的事件循環,在您想要之前不會從主函數退出。 在這種情況下,您只需將QThread :: finish()信號連接到一個插槽,該插槽檢查是否所有線程都已完成。

沒有事件循環和信號/槽,Qt線程沒有在其他線程實現中找到的join()方法,但QThread :: wait()有點類似。

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

阻止線程,直到滿足以下任一條件:

  • 與此QThread對象關聯的線程已完成執行(即從QThread::run()返回時)。 如果線程已完成,此函數將返回true 如果線程尚未啟動,它也會返回true
  • time毫秒已過。 如果時間是ULONG_MAX (默認值),則等待將永遠不會超時(線程必須從QThread::run()返回)。 如果等待超時,此函數將返回false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM