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

如何将Asio网络库与Qt库集成?,qt,exec,Qt,Exec,我想一起使用Asio和Qt?它们中的每一个都有一个必须调用的两个方法,并且每个方法都处于阻塞状态,例如:Asio有io_service.run(),qt有QCoreApplication.exec()。如果我运行其中一个方法,那么另一个方法就无法运行 我有两个解决方案: 创建另一个线程并从中调用io_service.run() 创建一个周期为100ms的计时器,并从调用QCoreApplication.exec()的同一线程调用io_service.poll() 这些解决方案是正确的?您肯定希望

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

我有两个解决方案:

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

  • 这些解决方案是正确的?

    您肯定希望研究多线程应用程序。Qt帮你解决了相当好的问题。您还需要解决之间的问题,并且需要记住这一点。

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

    您可能会对asio和QT主循环的真正集成感兴趣


    关于此主题的更多信息,请参见以下问题:

    No,这样,Qt使用select架构,我需要Linux内核2.6中的proactor架构,Asio具有此功能。所以这不是我的问题?我需要使用Asio。很抱歉回答得太晚。我理解你的问题的意思是:你需要在Qt应用程序中使用ASIO,但不确定是否/如何使用多线程。很抱歉造成混淆,但您的确切问题是什么?:)我以前的解决方案好吗?在性能方面:每100毫秒调用一次io_service.poll()是一项很好的工作?可能重复