2

我希望我的 FSM 终止任何时间事件在每个州的指定时间之后都没有发生。

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

有什么简单快捷的解决方案吗?

最好的祝福

马特

4

1 回答 1

1

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

于 2011-11-16T01:02:26.563 回答