質問

Simple_one_for_one戦略を持つ1人のスーパーバイザーであり、多くの労働者の子供が動的に追加されたテストアプリを作成しています。監督者にコールバックを実装(またはメッセージを受信する)方法は、子が正常に出るときに呼び出されますか?

主な目標は、すべての監視された労働者プロセスが完了し、最終レポートを表示する時が来たことを他のプロセスに通知することです。

そのような種類の動作を設計する方法は?スーパーバイザーとGen_Serverを組み合わせた独自の動作を作成する必要がありますか、それとも標準のOTP動作でこれを行う方法がありますか?

役に立ちましたか?

解決

このような通知を行うには、2つの方法があります。 1つ目は、最初から子供を単純に監視することです。 Erlang:Monitor/2を使用することにより、第三者はプロセスが生きているかどうかを可能にします。監視されたプロセスが死ぬと、結果は監視プロセスに理由を与えるメッセージに変わります。

もう1つの方法は、プロセスの[終了/2関数](GEN_FSMの場合は終了/3)で少しメッセージを送信することです。終端関数がすべての状況で呼び出されないため、これははるかに脆弱です。

モニターオプションははるかに優れています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top