问题标签 [boost-statechart]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Boost.Statechart 错误帮助
任何想法如何解决这一问题?
在 ubuntu 8.10 w/g++ 4.3.2 上使用 1.39_0
在下面的状态图中,短语“BUGGY”被打印了 3 次。人们会期望该事件只会触发一个“BUGGY”。对于我正在处理的项目,我无法返回 discard_event() 因为我需要事件到达多个状态(通常在正交状态集中的深处)。如果有可以应用的解决方法而不是修改状态图,我想知道。
$ cat bug.cpp
$ g++ bug.cpp && ./a.out
BUGGY
BUGGY
BUGGY
编辑::
这是一个示例状态机,它显示了我在实际工作中遇到的更大的问题。我知道top会转发evSay。请注意,c1、c2、c3 不会对 evSay 做出反应。这是一个我需要转发的示例,以便两个状态可以对 evSay 做出反应。
输出: BUGGY
儿童反应
BUGGY
BUGGY
c++ - Boost 状态图库 - 如何实现耗时的转换
在我们的项目中,我们有 UI 和逻辑(可以表示为状态机)。此步进机器中某些步骤之间的转换很长(IO 绑定)。我们不想在转换过程中一直窃取我们的 UI 线程。因此,我们正在寻找一种方法来在单独的线程中执行此转换,然后在转换完成时更新 UI。
我目前将 boost 状态图库评估为实现这种逻辑的选项之一,我想问一下使用它实现这种长时间转换功能的正确方法是什么?
谢谢。
c++ - Boost.Statechart - 选择点的记录方法问题
根据文档中的示例,我制作了以下无法编译的代码,因为 custom_reaction<> 似乎与 state<> 的第三个模板参数所期望的概念不匹配。我如何真正做出选择点?(我也在boost list上问过这个)
c++ - 使用 boost::statechart 进行单元测试
我们正在使用 boost 状态图库,并且在为代码编写单元测试时遇到了麻烦。
在我们的正常执行中,状态机开始于ClosedState
:
我们想测试一个特定的状态转换,而不必遍历状态机直到那个状态,例如我们想在AnotherState
. 问题在于sc::state_machine
它的初始状态是模板化的。向状态机提供导致测试状态的所有事件通常需要大量工作并使测试复杂化。
一个原始的解决方案是编写特殊的仅调试事件并将其添加到ClosedState
. 此事件将触发立即转换为AnotherState
.
你知道完成任务的其他方法吗?
c++ - Boost Statechart vs. 元状态机
显然 boost 包含两个独立的状态机库:Statechart和Meta State Machine (MSM)。标语给出了非常相似的描述:
- Boost.Statechart - 任意复杂的有限状态机可以用易于阅读和维护的 C++ 代码实现。
- Meta State Machine - 一个非常高性能的库,用于表达 UML2 有限状态机。
您知道在两者之间进行选择的主要区别是什么吗?
boost - 为什么我使用上下文().method() 违反状态图断言?
我已经为我将很快开展的项目开发了一些概念代码。该项目适用于状态机设计,我认为 boost::statechart 会做得很好。但是,当我尝试使用 context() 时遇到了障碍。这是一个示例(我很高兴添加更多代码,但我认为这是相关部分):
状态 Active 具有称为“[over|under]flow_condition”的方法,此时仅返回 true。除了我的设计问题之外,当我实例化时,我遇到了以下断言失败:
这是断言:
断言“get_pointer(stt.pContext_)!= 0”失败
我在文件“/usr/include/boost/statechart/simple_state.hpp”第 689 行(boost 1.45)中查看了这个断言,评论说它是为了防止 simple_state 使用上下文。当我重新访问秒表示例并看到该示例正在做我想做的事情时,这让我感到困惑。所以我编译了它,不出所料,秒表代码没有违反这个断言。我错过了什么吗?也许我错过了代码中的其他地方?这是整个标题(请记住它是概念代码......在完全通用化之前,我不会将其发布到野外):
c++ - 如何在 boost::statechart 中将对象赋予状态?
我处于需要修改我没有编写的状态机的情况。该状态机是使用Boost Statechart编写的。不幸的是,我发现这段代码难以理解,而且编写它的人正在度假。
我认为问题很简单:我有一个变量,thing
我想在其中一些状态下使用它。它代表一个需要通知事物的单一应用程序控制器。我可以给什么构造函数(或其他什么)thing
,使其可用于机器的状态?
根据此示例声明状态:
PS我希望这个问题有一个更好的标题;帮助表示赞赏。
c++ - 提升异步状态机
是否可以从 processor_handle 为 asynchronous_state_machine 获取调度程序的引用?
代码:
boost - 在 boost::statechart 中实现基于条件的内部初始状态选择的方法?
boost::statechart 有哪些可能的方法来实现Harel 的状态图和 UML 状态图比较的幻灯片 25 中描述的初始状态选择?
“在进入超状态时,进入哪个状态(X、Y、Z)取决于条件 C 的评估结果。”
c++ - 在 boost::statechart 中记录状态变化
对于单元测试,我试图在启动状态机事件后记录所有状态事务。
例如,如果我将事件 A 发布到 async_state_machine 的 fifo_scheduler,状态机将经过状态 B、C,然后返回 D。由于无法记录所有事件状态,我只能检查它是否在之后进入状态 D它是在进行单元测试时完成的:-(
我唯一能想到的就是修改我创建的所有状态(从 simple_state 派生)的所有反应方法或构造函数,以便它们进行记录。当我真的想在它调用状态的 react() 方法之前挂钩到 async_state_machine 时,这似乎有点骇人听闻......