10

Gen_Fsm と Gen_Server のドキュメントを調べたところ、多かれ少なかれ、似たような動作をすることがわかりました。私の意見では、ブロードキャストを送信したり、tcp sock をリッスンしたりするためのループ関数が 1 つある場合は、Gen_Fsm を使用するか、gen_server を使用することをお勧めします。私はそれが正しいかどうか知りたいですか?

4

1 に答える 1

9

あなたはそれを正しく見ていて、機能的gen_servergen_fsmは非常に似ています。

ただし、ほとんどのプログラムでは、使用法以上のgen_serverものがありgen_fsmます。

私の意見gen_fsmでは、使用法がgen_fsmモデルに100%適合する場合にのみ役立ちます。したがって、問題に適合するシンプルで明確な有限状態マシンが必要です。通常、FSMの状態カウントは現実の世界に直面して爆発する傾向があることに注意してください。

gen_fsmの変数に多くの二次状態情報があることに気付いた場合はState、おそらく切り替えて変数に状態をgen_server追加するときです。gen_fsmState

一般的に疑わしい場合:使用gen_server

gen_servergen_fsm(通常は悪化します)の両方の欠点の1つgen_fsmは、選択的受信を使用できないことです。選択的受信は、実際のアプリケーションでステートマシンの複雑さを軽減するための重要なツールです。

選択的な受信動作とOTP動作の両方の利点を活用するには、plain_fsmをお勧めします。

于 2011-06-01T16:24:28.487 に答える