如何将Asio网络库与Qt库集成?

我想一起使用Asio和Qt?他们每个都有两个必须调用的方法,每个方法都是阻塞的,例如:Asio有io_service.run(),qt有QCoreApplication.exec(),如果我运行其中一个,那么另一个无法运行.

我有两个解决方案:

>创建另一个线程并从中调用io_service.run().
>创建一个100ms周期的计时器,并从调用QCoreApplication.exec()的同一线程调用io_service.poll().

这些解决方案是否正确

最佳答案 这是一个简单的解决方案,适用于每个平台,但它有一些小缺点.您正在为应用程序的asio部分引入延迟,这可能是可接受的,也可能不是 – 取决于您的情况.

您可能对my solution感兴趣,它实现了asio和QT主循环的真正集成.

有关此主题的更多信息,请参阅以下问题:How to integrate Boost.Asio main loop in GUI framework like Qt4 or GTK

点赞