非确定性状态机理解

Nondeterministic State Machine understanding

我正在尝试为我的 iOS 项目构建 DSL。
为此,我计划以 State Machine 的形式构建一个 Semantic Model。 (术语来自 Fowler 关于 DSL 的书)。
主要思想:State Machine编码为statestransitions之间的集合,然后可以写一些单元测试来检查some_action是否在[=16=上] 将系统引导至some_state2

问题是我的应用程序有很多后台线程,因此在给定时刻状态机中可以激活多个状态。

我读过这样的状态机 Nondeterministic finite automaton,浏览了 wiki 页面,但这对我来说太理论化了。

这是一个示例状态机:

s8只有收到t7t8才能激活,也就是说应该"wait"。


问题:
1. 状态机中有没有类似"wait"的东西?
2. 也许,这不是NFA,而是两个状态机?我应该关心如何命名这种语义模型吗?
3. s8 是否可以用一些后台线程来实现,它接受来自 s4s7 的通知,并且只有当它们都发送通知时才被激活(这意味着该单元达到超时时测试失败,然后应该在模型中的某处提及该超时)?

在分层状态机中查看 orthogonal regions,这应该可以满足您的需求。

创建一个包含两个子区域的新状态:第一个区域包含 s1、s2、s3、s4 和一个新的最终状态(t8 的目标);第二个区域包含 s5、s6、s7 和一个新的最终状态(t7 的目标)。然后添加从新状态到 s8 的新转换。

仅当两个区域都处于最终状态时才应遍历新转换。