[英]How to synchronize between main and worker thread in Qt?
我有這個設計。 我無法實現我所需要的:
我的目標是在完成任務后重新啟動(重新運行)到“工作”線程。 我打算為此方法調用工作線程析構函數,因為它從堆中獲取內存。 我需要清理所有相關變量。
我怎樣才能做到這一點?
int main()
{
// re-start start
A* worker = B::getInstance();
worker->start();
// re-start end
return a.exec();
}
編寫 for 循環不是解決方案。 因為,我需要學習工作線程完全停止。 我嘗試使用 worker->wait()。 但它不起作用。
如何使用QThread
的信號finished()
?
我不完全理解你的問題,但是如果你分配了線程並且你必須在它完成后重新啟動它,你可以執行以下操作:
去檢查:
重啟:
RAII(Resource Acquisition Is Initialization)中的一般規則是,獲取資源的代碼負責確保它被釋放。 因此,您的工作線程應該在釋放它獲得的所有資源后終止。
主程序的一般風格將是:
或者,主線程仍然可以在永久循環中運行,但會識別可委托任務何時到達,然后初始化工作線程並為其分配特定任務。 這允許與不完整的可委托任務一樣多的工作線程。 您可能需要限制數量,以免有太多未完成的任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.