具有Boost MSM的分层状态机
Hierarchical state machine with Boost MSM
这里有一个问题给那些有Boost MSM经验的人。我有一个用Boost MSM实现的非常大的状态机,最后今天我用光了向量限制50(有太多的事件进入我的状态机,这是无法避免的)。我已经创建了更高的矢量标头(vector60, vector70等),但我想压缩我的状态机作为一个整体。
问题是,MSM是否支持分层状态机。例如(如果我说错了请纠正),在分层状态机中,如果在特定状态下未处理事件,则该事件将被转发到当前状态的父状态&等等。
作为减少转换表大小的一部分,我希望创建一个父状态,其中具有公共处理程序的事件将被处理,从而减少转换表的大小。
欢迎任何建议/评论。
谢谢
是的,Boost。MSM支持分层状态机。这种分层状态机称为"子机状态"。它是UML术语和Boost。MSM也用它
下面是子机状态的一个例子:http://redboltz.wikidot.com/sub-machine-state从父状态机过渡到子状态机,可以使用入口点伪状态。见http://redboltz.wikidot.com/entry-point-pseudo-state
从子状态机过渡到父状态机,可以使用退出点伪状态。见http://redboltz.wikidot.com/exit-point-pseudo-state
从内部状态到外部状态对事件进行评估。因此,您可以在父状态机上编写公共转换。这里有一个实际的例子:http://redboltz.wikidot.com/practical-sub-machine-example
所有示例包含UML状态机图和完整的代码。
相关文章:
- 如何在使用 Boost MSM 编写的状态机中直接访问任何状态
- 启动状态机无法在启动时处理内部转换
- 实现C++状态机.如何解决Wpmf对流警告
- 无法使用模板参数编译提升元状态机
- Boost状态机语言-"操作"中的"发布"事件
- 将C++数据模型与Qt SCXML状态机一起使用
- 如何在 boost::msm 中实现可以访问状态机 (SM) 的后端/前端的"BaseState"
- 分层状态机涉及哪些原则,以及如何实现基本模型?
- 如何在状态内创建状态机?
- 状态机与开关情况
- C++状态机,继承了具有语法不正确的成员值的类
- c++有限状态机
- CXX 库,用于具有运行时操作的有限状态机/自动机
- QTSCXML状态机中的事件处理
- 如何动态创建状态机
- 状态机表示
- 将Java状态机示例转换为C++,陷入最后一道障碍
- QT状态机:如何在初始状态下设置防护措施
- 在Boost Meta状态机的后端访问前端
- 具有Boost MSM的分层状态机