同样gen_fsm和gen_server一样也是“行为模式”的一种,但是使用频率没有后者高,如果它恰巧符合你的应用程序需要,那么将大大简化你的任务,使你的代码更易于阅读和维护。
erlang风格的有限状态机
gen_fsm(Finite State Machines),有限状态机,是一种抽象模型,由有限数量的状态和事件构成,当程序处于各个状态时,它可以从环境中接收一些特定的事件——并且只接收这些事件。而fsm处于特定状态时,程序会执行一些与当前状态对应的预先决定好的动作,使得当前状态转化为另一个新的状态,然后fsm以此新状态等待下一个新的事件。
demo1
比如,图中所示的 FSM ,其中的 da (白天)状态可以处理 eel se (日食)和 sunset (日落) eclipse 件后 FSM 的状态保持不变,而 sunset 件导致状态转移为 night (夜晚) night 状态, sunrise (日出)事件又使得状态转移回 day 对于任何违反顺序出现的 件(例如,在 day 状态下出现 sunrise 件),只有当状态转移到能处理