开发者

when to use Gen_Fsm and when to use Gen_Server?

After checking out Gen_Fsm and Gen_Server documents, I 开发者_开发问答found that, more or less, they act as similar behavior. In my opinion, if there is one loop function for sending broadcast or listening tcp sock, it is better to use Gen_Fsm, or else to use gen_server. i want to know whether it is right ?


You have seen right that gen_server and gen_fsm are very similar in functionality.

However in most programs there is much more gen_server than gen_fsm usage.

In my opinion gen_fsm is only useful when the usage 100% fits the gen_fsm model. So there has to be a simple and clear finite state machine that fits to your problem. Be aware that usually FSM's state count tends to explode in the face of the real world.

If you find yourself having lots of secondary state information in gen_fsm's Statevariable its probably time to switch to gen_server and add gen_fsm' s state to the State variable.

Generally when in doubt: use gen_server

One disadvantage of both gen_server and gen_fsm (which comes out worse in gen_fsmusually) is that you can't use selective receive. Selective receive is a important tool for reducing state machine complexity in real world applications.

To have the advantage of both selective receive and OTP behaviours I'd recommend plain_fsm.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜