如何用ACE_Reactor替换WT的主循环

|| 我们有一个项目,该项目具有使用ACE实现的核心功能,并围绕它的Reactor进行了架构。我们想使用Wt添加一个小的Web界面。 所以问题是,是否可以用ace反应器代替wt接口的主回路? 我想到的唯一坏主意是在Reactor端有一个快速计时器,以某种方式调用wt部分。 另一方面,可以使用handle_events方法“逐个滴答地”运行反应堆,但我在wt端找不到等效项。 注意: 这个问题背后的主要关注点是关于线程。我们没有线程,代码也不是线程安全的,如果HMI可以与应用程序的其余部分在同一线程上运行,那么对我们来说将更加简单。但是有两次阻塞调用,一个是对Reactor-> run_reactor_event_loop()的调用,而另一个是Wt :: WRun()的调用是一个问题!     
已邀请:
可以对Wt连接器进行一些修改。 Wt可以在没有线程支持的情况下进行编译,因此在连接器中必须存在某种select()循环。您需要的是能够使用计时器挂接到该循环中的功能。 您在谈论http连接器吗?这是通过boost.asio实现的,因此您可能只需要一个带有async_wait的asio最后期限计时器,它执行reactor-> run_reactor_event_loop()。当您深入研究boost.asio文档时,甚至可能会找到不同的主意... 它甚至可以在不修改连接器的情况下工作。它没有记录,但是Server :: instance()-> service()(在src / http / Server.h中)将为您返回实现此功能所需的asio服务。 更多信息-> Wt \的邮件列表?     

要回复问题请先登录注册