在我的应用程序中,我需要阻止执行,直到信号到达(等待Web请求完成)。这发生在非gui线程中。
查看Qt 5.3文档中的blocking fortune client example,它似乎使用了特定于waitForConnected()类的QTcpSocket方法,但我使用的是QNetworkAccessManager没有等待的方法。
我还阅读elsewhere要执行此操作,可能需要创建一个临时QEventLoop,它将阻塞直到事件完成。这个解决方案带有一堆警告,不应该在“生产代码”中使用它,因为在极端情况下可能出现各种潜在问题等。
因此。什么人要做?
我可以在不引入第二个线程的情况下以某种方式使用QWaitCondition工作吗? Qt5中存在哪些同步原语允许我等待信号到达单个线程?
谢谢!
答案 0 :(得分:0)
Qt被设计为asynchronous,这意味着你不应该阻止,除非在一些不寻常的情况下(例如,单元测试)。
如果你能描述一下你想要实现的目标,也许有人可以建议一种方法来实现它而不会阻塞。