【发布时间】:2011-05-15 14:32:58
【问题描述】:
显然 boost 包含两个独立的状态机库:Statechart 和 Meta State Machine (MSM)。标语给出了非常相似的描述:
- Boost.Statechart - 任意复杂的有限状态机可以用易于阅读和维护的 C++ 代码实现。
- 元状态机 - 用于表达 UML2 有限状态机的高性能库。
您知道两者的主要区别是什么以及在选择两者时有哪些注意事项?
【问题讨论】:
-
呵呵,又一个很有趣但没人知道答案的案例……:)
-
:D 这个问题是我 SO 经验的巅峰之作!从两位开发人员那里得到答案......它可以变得更好吗?!非常感谢 Christophe 和 Andreas。
-
Statechart 让您将功能放入构造函数和析构函数中。这是一种反模式,尤其是对于析构函数。
-
在状态图中,可以将退出操作放在一个单独的 exit() 处理程序中,该处理程序在销毁之前调用。我认为这项规定缓解了 Lev 提到的反模式的主要问题。
-
作为第三个选择,你也可以考虑这个 C++11 FSM 库:github.com/skramm/spaghetti
标签: c++ boost state-machine boost-statechart boost-msm