【问题标题】:How to use ASIO along with QT4?如何将 ASIO 与 QT4 一起使用?
【发布时间】:2020-07-11 06:06:26
【问题描述】:

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

【问题讨论】:

标签: c++ c++11 qt4 asio


【解决方案1】:

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

  1. 在新线程中调用io_context::run()。所有异步处理程序都将在此线程中执行。
  2. 使用mutex 确保数据模型可以在 ASIO 和 GUI 之间安全共享。每次读取或更新数据时始终锁定互斥锁。
  3. 每当需要更新 UI 时,使用 Qt signals and slots 和/或 condition_variable 从 ASIO 完成处理程序向 GUI 发出信号。不要直接从 ASIO 代码接触 GUI,因为只有 UI 线程可以更新 UI。

【讨论】:

    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多