我已经使用asio编写了C ++ 11代码来从网络发送/接收数据包。要使用asio,需要调用asio::io_service::run()
,主线程将在此函数中等待。现在,在其中一个应用程序中,我需要开发一个Gui,我需要使用它的Qt 4.8。但是对于Qt Gui应用程序,主线程需要在QApplication::exec()
中等待。尽管Qt拥有自己的库来从网络发送/接收数据,但我还是希望将代码与asio一起使用。如何将Asio和Qt一起使用?
没有看到您的代码..高级通用方法:
io_context::run()
。io_context::run()
以确保可以在ASIO和GUI之间安全地共享数据模型。每次读取或更新数据时,始终锁定互斥锁。mutex
和/或mutex
从ASIO完成处理程序向GUI发送信号。不要直接通过ASIO代码触摸GUI,因为只有UI线程才能更新UI。