Qt跨线程调用

4
我有一个Qt/C++应用程序,其中包括一个常规的GUI线程和一个网络线程。网络线程使用外部库,该库具有自己的基于select()的事件循环...因此,网络线程不使用Qt的事件系统。
目前,当发生各种事件(例如成功连接)时,网络线程只会发出信号。我认为这样做还可以,因为信号/插槽机制会正确地将信号发布到GUI线程。
现在,我需要让网络线程能够调用GUI线程来提问。例如,网络线程可能需要GUI线程请求弹出对话框以请求密码。
有人知道适合这样做的机制吗?
我目前最好的想法是让网络线程使用QWaitCondition等待,在发出对象后(emit passwordRequestedEvent(passwordRequest);)。passwordRequest对象将具有特定QWaitCondition的句柄,因此可以在做出决策后发出信号。
这种方法可行吗?还是有其他选项?
1个回答

6

如果您不喜欢使用条件变量,那么使用信号在两个线程之间发送消息是可以的,这种方式在某种程度上是异步的。如果您想在等待GUI的回复时继续处理网络事务,那么这可能是更好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接