Qt事件处理器和boost ASIO的io_service有什么区别?

What is the difference between Qt event handler and boost ASIO's io_service?

两者都是带有事件循环的异步事件处理程序。这是标题。

在 Qt 中,事件循环以 QApplication::exec() 开始,而 io_service 则以 io_service::run() 开始。我的问题是在这一点之后。 有哪些我可以在 Qt 中实现而在 io_service 和 vice-versa 中无法实现的东西?有什么限制?什么时候更可取(忽略 Qt 的 GUI)?

更多不重要的信息:在我脑海中引发这个问题的原因是我正在测试一些 C++ Qt-based 程序,其中我的 GUI 逻辑在class 派生自 QObject。出于我的测试目的,我正在寻找 post 函数(如 io_service)到 Qt 事件处理程序的方法(因此,为简单起见绕过 QObject::connect() 事情),但后来意识到仅 posting 函数 QApplication::postEvent();,将 仅 Qt 事件 作为参数;不是函数、仿函数或 lambda!我没有问这个,因为这是显而易见的 XY problem,我仍在努力。

我认为 QObject 和 io_service 之间没有任何重大区别。至于你的 XY 问题,QMetaObject::invokeMethod(obj, []{}) 接受 lambda。