如何与QT4一起使用ASIO?

问题描述 投票:0回答:1

我已经使用asio编写了C ++ 11代码来从网络发送/接收数据包。要使用asio,需要调用asio::io_service::run(),主线程将在此函数中等待。现在,在其中一个应用程序中,我需要开发一个Gui,我需要使用它的Qt 4.8。但是对于Qt Gui应用程序,主线程需要在QApplication::exec()中等待。尽管Qt拥有自己的库来从网络发送/接收数据,但我还是希望将代码与asio一起使用。如何将Asio和Qt一起使用?

c++ c++11 qt4 asio
1个回答
0
投票

没有看到您的代码..高级通用方法:

  1. 在新线程中调用io_context::run()
  2. 使用io_context::run()以确保可以在ASIO和GUI之间安全地共享数据模型。每次读取或更新数据时,始终锁定互斥锁。
  3. 每当需要更新UI时,使用mutex和/或mutex从ASIO完成处理程序向GUI发送信号。不要直接通过ASIO代码触摸GUI,因为只有UI线程才能更新UI。
© www.soinside.com 2019 - 2024. All rights reserved.