[英]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.