[英]Qt cross thread call
我有一个Qt / C ++应用程序,具有通常的GUI线程和网络线程。 网络线程正在使用外部库,它有自己的基于select()的事件循环...所以网络线程没有使用Qt的事件系统。
此时,网络线程只在发生各种事件时发出()s信号,例如连接成功。 我认为这样可行,因为信号/插槽机制正确地为GUI线程发布信号。
现在,我需要网络线程能够调用GUI线程来提问。 例如,网络线程可能要求GUI线程请求建立对话框以请求密码。
有谁知道这样做的合适机制?
我目前最好的想法是让网络线程在发出一个对象之后使用QWaitCondition等待( emit passwordRequestedEvent(passwordRequest);
;. passwordRequest对象将具有特定QWaitCondition的句柄,因此可以在做出决定时发出信号) ..
这种事情是否明智? 或者还有其他选择吗?
使用信号在线程之间发送消息很好,如果你不喜欢使用条件变量,那么你可以以一种或多或少的异步方式向两个方向发送信号:如果你想继续这可能是一个更好的选择在等待GUI的回复时处理网络内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.