gen_fsm初始状态,在产卵时向其发送事件

JoG*_*oGr 1 erlang erlang-otp

如果我想在生成gen_fsm时始终将事件发送到gen_fsm的初始状态,那么我应该在哪里放置该函数调用?在start_link之后或者从第一个调用start_link的进程开始.这里有最好的做法吗?

Rob*_*loi 5

如果您只想在启动后更改FSM的状态,则可以简单地为状态机实现init函数:

阅读:http://www.erlang.org/doc/man/gen_fsm.html#Module: init-1

每当使用gen_fsm:start/3,4或gen_fsm:start_link/3,4启动gen_fsm时,新进程将调用此函数进行初始化.

Args是提供给start函数的Args参数.

如果初始化成功,该函数应返回{ok,StateName,StateData},{ok,StateName,StateData,Timeout}或{ok,StateName,StateData,hibernate},其中StateName是初始状态名称,StateData是初始状态数据gen_fsm.

此外,使用init函数,您可以确定两个函数(start_link和init)的原子性.他们都会成功或失败.