マネージャープロセスが特定のメッセージを受信した場合、gen_event
すべてのハンドラーがそのメッセージを処理した後、他のイベントを取得して処理する前に、メッセージを停止する必要があります。私が見つけることができる唯一の方法はこれです:
-module(manager).
...
stop(Reason) ->
gen_event:sync_notify(manager, {stop, Reason}),
gen_event:stop(manager).
remove_handler
ただし、これにはすべてのハンドラーがから戻る必要があります。そうしないと、前後handle_event({stop, Reason}, State)
の別のプロセスから送信されたイベントを処理できます。ハンドラーに要件を課さないアプローチが必要です。sync_notify
stop