Erlang 如果没有事件发生,则终止gen_fsm

Erlang 如果没有事件发生,则终止gen_fsm,erlang,otp,fsm,gen-fsm,Erlang,Otp,Fsm,Gen Fsm,我希望我的FSM在每个州的指定时间段后,在事件未发生时终止 通过在init callback中指定timeout值,我只能在创建FSM后没有事件的情况下实现这样的场景,但我希望此功能也适用于所有状态 有简单快捷的解决方案吗 顺致敬意, Matt您可以在每个状态的返回元组中设置超时{next_state,NextStateName,NewStateData,timeout}。有关更多详细信息,请参阅文档。但它只适用于gen_fsm中并没有任何传入消息的情况,所以它仅适用于当可能并没有人与进程通信时

我希望我的FSM在每个州的指定时间段后,在事件未发生时终止

通过在init callback中指定timeout值,我只能在创建FSM后没有事件的情况下实现这样的场景,但我希望此功能也适用于所有状态

有简单快捷的解决方案吗

顺致敬意,
Matt

您可以在每个状态的返回元组中设置超时
{next_state,NextStateName,NewStateData,timeout}
。有关更多详细信息,请参阅文档。但它只适用于gen_fsm中并没有任何传入消息的情况,所以它仅适用于当可能并没有人与进程通信时,您希望终止进程的情况。如果您想要硬限制(例如协议),您应该使用或,并处理计时器终止等