gpt4 book ai didi

c++ - Qt跨线程调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:42 28 4
gpt4 key购买 nike

我有一个 Qt/C++ 应用程序,带有通常的 GUI 线程和一个网络线程。网络线程使用外部库,它有自己的基于 select() 的事件循环...所以网络线程没有使用 Qt 的事件系统。

目前,网络线程只是在各种事件发生时发出()s 信号,例如连接成功。我认为这工作正常,因为信号/槽机制为 GUI 线程正确发布信号。

现在,我需要网络线程能够调用 GUI 线程来提问。例如,网络线程可能需要 GUI 线程请求建立对话框,请求密码。

有人知道这样做的合适机制吗?

我目前最好的想法是让网络线程在发出对象后使用 QWaitCondition 等待 (emit passwordRequestedEvent(passwordRequest);。passwordRequest 对象将具有特定 QWaitCondition 的句柄,并且所以可以在做出决定时发出信号..

这样的事情合理吗?还是有其他选择?

最佳答案

使用信号在线程之间发送消息很好,如果你不喜欢使用条件变量,那么你可以或多或少地以异步方式在两个方向上发送信号:如果你这样做,这可能是一个更好的选择想在等待 GUI 回复的同时继续处理网络内容。

关于c++ - Qt跨线程调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935604/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com