c-具有子状态的状态机转换的优先级



我目前正在编写一个通用状态机。但我有几个理解问题。

假设我有一个状态a。如果满足一个条件,a将转换为B。A也具有子状态A1。如果满足一个条件,A1转换到状态C。

如果两个条件都满足并且活动状态为A1,我是否转换到B或C?此外,由于A在技术上也是活动的,我是否必须运行A的重复运行任务?

为了使状态机具有确定性,给定状态的所有转换(包括它的"子状态",这实际上只是定义具有类似转换的状态的简写(必须是互斥的。如果它们是而不是互斥的,那么就有了非确定性状态机。这样的机器是完全合理的,但更难评估——在任何给定的时间,它都可以处于任何一组状态(而不仅仅是一个状态(,并且从当前状态集中的任何状态可能发生的每一次转换都与寻找下一组状态有关。因此,在您的示例中,您将从处于状态{A1}转到状态{B,C}

经过更多的研究,我发现这篇文章回答了我在第2.10章中的问题。

崩溃的UML状态机

很快,它取决于哪个事件首先发生,超时还是第二个事件。

最新更新