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

时间:2011-11-15 09:50:56

标签: erlang otp fsm gen-fsm

我希望我的FSM在每个状态的指定时间之后的任何时间都不会终止事件。

我只能在创建FSM后没有事件的情况下通过在init回调中指定超时值来实现这种情况,但我希望此功能也可用于所有状态。

任何简单&快速解决方案

最好的问候

马特

1 个答案:

答案 0 :(得分:1)

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