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

时间:2011-11-06 11:42:01

标签: qt exec

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

我有两个解决方案:

  1. 创建另一个线程并从中调用io_service.run()。
  2. 创建一个100ms周期的计时器,并从调用QCoreApplication.exec()的同一线程调用io_service.poll()。
  3. 这些解决方案是否正确?

2 个答案:

答案 0 :(得分:2)

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

您可能对my solution感兴趣,它可以真正整合asio和QT主循环。

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

答案 1 :(得分:0)

您肯定希望了解多线程应用程序。 Qt可以很好地帮助你platform-independent threading classes。您还需要在communication之间解决objects owned by different threads问题,并且还需要牢记painting is limited outside of the GUI thread