我希望我的FSM在每个状态的指定时间之后的任何时间都不会终止事件。
我只能在创建FSM后没有事件的情况下通过在init回调中指定超时值来实现这种情况,但我希望此功能也可用于所有状态。
任何简单&快速解决方案
马特
答案 0 :(得分:1)
您可以在每个州{next_state, NextStateName, NewStateData, Timeout}
中设置返回元组的超时。有关详细信息,请参阅gen_fsm文档。但它仅适用于gen_fsm中没有任何传入消息的情况,因此仅当您希望终止进程时可能没有人与之通信时才适用。如果您想要硬限制(例如协议),您应该使用erlang:send_after/3
或erlang:start_timer/3
并处理计时器终止等等。