如何解决如何用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 \的邮件列表?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。