输入驱动vs事件驱动的状态机

我爱茜茜公主 / 2023-08-07 / 原文

各种杂志、书籍和在线上发表的大多数是输入驱动状态机(又叫作轮询状态机)
输入驱动状态机,不断检查每个状态中的各种输入;

识别方法:
1、if()语句检查每个状态中的输入,只有在发现正确的输入组合后,它们才执行操作;
2、状态图中,输入驱动的状态机,状态转换不是由事件标记的,是由保护条件标记的;

输入驱动状态机主要的问题是,它们可能会错过输入中的变化(如果采样太慢)或者根据时间(竞争条件)以不同的顺序识别变化;它们也很浪费,因为它们需要一直运行;

而事件驱动的状态机,事件在状态机外部生成,然后排队等待处理,这将事件生成与状态机逻辑分离开来

参考文章:
文章1