如何用ACE_Reactor替换WT的主回路
How to replace WT's main loop with an ACE_Reactor
我们有一个项目,其核心功能使用ACE实现,并围绕其Reactor构建。我们想使用Wt.添加一个小型web界面
所以问题是,有可能用ace反应器取代wt界面的主回路吗?
我想到的唯一坏主意是在反应堆一侧安装一个快速计时器,它会以某种方式调用wt部分。反过来,reactor可以使用它的handle_events方法"一个接一个"地运行,但我在wt方面找不到等效的方法。
注意:这个问题背后的主要关注点是线程。我们没有线程,代码不是线程安全的,如果HMI可以与应用程序的其他部分在同一个线程上运行,对我们来说会简单得多。但是有两个阻塞调用,一个调用reactor->run_reactor_event_loop(),另一个调用Wt::WRun()是个问题!
这可以通过对Wt连接器进行一些修改来工作。Wt可以在没有线程支持的情况下编译,因此在连接器中必须有某种select()循环。你所需要的是能够用计时器钩住这个循环。
你说的是http连接器吗?这是用boost.asio实现的,所以你可能只需要一个带有async_wait的asio deadline_timer来执行reactor->run_reactor_event_loop()。当你深入研究boost.asio文档时,也许你甚至会发现一个不同的想法。。。
它甚至可以在不修改连接器的情况下工作。它没有文档化,但是Server::instance()->service()(在src/http://Server.h中)会为您返回实现它所需的asio服务。
更多信息->Wt的邮件列表?
相关文章:
- Cython通过浮点数的最快方式,用于高频控制回路
- Wt::D bo 中的循环依赖关系
- Wt 连接函数,将参数传递给作为连接函数参数的函数
- 使用 Wt 框架侦听数据
- ostream_iterator 与每个回路效率
- 带有多个内部回路的循环的时间复杂性
- 异步WT :: HTTP ::客户端响应和请求匹配
- 如何在 Wt 中为对话框添加背景(如果可能)
- 如何在 Wt 中向表添加滚动区域(机智)
- WT:未设置文档根或设置为空路径
- C 矢量化双回路
- 将 Wt 与 Qt 结合使用
- 有效地在小环上使用OpenMP,并具有非常大的嵌套回路
- Ubuntu服务器上的C WT框架
- Wt 3 memory deallocation
- 如何从开关C++内部的回路中断开
- Wt C++按钮单击后使窗口不可单击
- 在函数运行时停止 Wt C++函数
- 如何停止WT C 写入stdout(控制台)
- 如何用ACE_Reactor替换WT的主回路