Qt事件处理程序和boost ASIO的io_service之间有什么区别?

时间:2017-03-18 21:28:18

标签: c++ qt asynchronous boost asio

两者都是具有事件循环的异步事件处理程序。这就是头条。

在Qt中,事件循环以QApplication::exec()开头,而io_service以io_service::run()开头。我的问题是在这一点之后。 我在Qt中可以实现的是什么,而不是在io_service中,反之亦然?有什么限制?何时更可取(忽略Qt的GUI)?

更多不重要的信息:在我看来是什么触发了这个问题是我正在测试一些基于C ++ Qt的程序,其中我在一个派生自{{1}的类中具有GUI的逻辑}}。为了我的测试目的,我一直在寻找将函数(比如在io_service中)发布到Qt事件处理程序的方法(因此,为简单起见绕过QObject),但后来意识到唯一的发布函数QObject::connect() ,将仅Qt事件作为参数;不是函数,算子或者lambdas!我没有问过这个问题,因为那是一个显而易见的XY problem,而且我还在努力。

1 个答案:

答案 0 :(得分:0)

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