Gen_Fsm と Gen_Server のドキュメントを調べたところ、多かれ少なかれ、似たような動作をすることがわかりました。私の意見では、ブロードキャストを送信したり、tcp sock をリッスンしたりするためのループ関数が 1 つある場合は、Gen_Fsm を使用するか、gen_server を使用することをお勧めします。私はそれが正しいかどうか知りたいですか?
質問する
2652 次
1 に答える
9
あなたはそれを正しく見ていて、機能的gen_server
にgen_fsm
は非常に似ています。
ただし、ほとんどのプログラムでは、使用法以上のgen_server
ものがありgen_fsm
ます。
私の意見gen_fsm
では、使用法がgen_fsmモデルに100%適合する場合にのみ役立ちます。したがって、問題に適合するシンプルで明確な有限状態マシンが必要です。通常、FSMの状態カウントは現実の世界に直面して爆発する傾向があることに注意してください。
gen_fsm
の変数に多くの二次状態情報があることに気付いた場合はState
、おそらく切り替えて変数に状態をgen_server
追加するときです。gen_fsm
State
一般的に疑わしい場合:使用gen_server
gen_server
とgen_fsm
(通常は悪化します)の両方の欠点の1つgen_fsm
は、選択的受信を使用できないことです。選択的受信は、実際のアプリケーションでステートマシンの複雑さを軽減するための重要なツールです。
選択的な受信動作とOTP動作の両方の利点を活用するには、plain_fsmをお勧めします。
于 2011-06-01T16:24:28.487 に答える