Erlang 以原子方式通知并停止gen_事件管理器
当我的Erlang 以原子方式通知并停止gen_事件管理器,erlang,gen-event,Erlang,Gen Event,当我的gen_eventmanager进程接收到特定消息时,我希望它在所有处理程序处理完它之后,以及在它们获取并处理任何其他事件之前停止。我能找到的唯一方法是: -module(manager). ... stop(Reason) -> gen_event:sync_notify(manager, {stop, Reason}), gen_event:stop(manager). 但这要求所有处理程序从处理事件({stop,Reason},State)返回remove
gen_event
manager进程接收到特定消息时,我希望它在所有处理程序处理完它之后,以及在它们获取并处理任何其他事件之前停止。我能找到的唯一方法是:
-module(manager).
...
stop(Reason) ->
gen_event:sync_notify(manager, {stop, Reason}),
gen_event:stop(manager).
但这要求所有处理程序从
处理事件({stop,Reason},State)
返回remove\u handler
,否则它们可以在sync\u notify
之后和stop
之前处理从不同进程发送的事件。我更愿意采用一种对处理程序没有任何要求的方法 据我所知,除了用退出(Pid,Reason)简单地杀死事件管理器或命令其自己的主管关闭事件管理器之外,没有其他方法可以做到这一点,而您使用的处理方式仅限于一次调用