0

プロセスを実装する最も一般的な方法は何ですか?それはその作業を実行して終了するだけです?

私の場合、これらの労働者は監督者によってsimple_one_for_one監督されています。私は周りを探していましたが、それ以上のものは見つかりませんでしたspawn_link

work(Args) ->
{ok, spawn_link(fun() ->
    ... do_the_necessary_work ...
end)}.

それにもかかわらず、この方法は優れたOTP設計ではないようです。

何か案は?

4

1 に答える 1

4

これは実際には適切な方法です。proc_lib:spawn_link(...)代わりに使用していることを確認してくださいerlang:spawn_link(...)(監視ツリーのトラバースやより詳細なエラーログのために祖先を保存するため)。

そしてもちろん、ワーカーが失敗した場合に何をするかに応じて、temporaryまたはに設定されたすべてのワーカーの再起動戦略を作成することもできます(ワーカーを再起動してもう一度ジョブを実行するか、場合によってはジョブを破棄します)。transient失敗の)。

于 2012-11-19T08:53:16.423 に答える