3

当我的管理器进程接收到特定消息时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_notifystop

4

1 回答 1

2

exit(Pid, Reason)据我所知,除了简单地杀死事件​​管理器或命令将其关闭之外,没有其他方法可以做到这一点,而不是您用于以真正仅限于一次呼叫的方式处理由其自己的主管。

于 2011-03-29T11:29:53.330 回答