如何使用具有不同状态的同一事件处理程序的许多实例?

时间:2011-11-08 22:28:25

标签: erlang otp gen-event

我有一个OTP应用程序,其中包含定期发生的事件。有几个演员想要回应这个事件。每个演员所做的事情都是其自身状态的函数,但除此之外它们是相同的。

我的问题在于如何将此设置合并到监督树中。我有一个gen_event管理器,每个actor都是一个事件处理程序。如果不是因为gen_event监督很奇怪,这将很有效。一旦我的第一个处理程序是add_sup_handler,其余部分就会失败already_started而我的gen_server将作为事件处理程序的主管而死。

那我该怎么办?我开始认为我应该编写自己的事件管理器,以便跟踪我的所有演员及其状态。

1 个答案:

答案 0 :(得分:2)

gen_event:add_handler/3

  

Handler是回调模块Module或元组的名称   {Module,Id},其中Id是任何字词。 {Module,Id}表示   可以在有特定事件处理程序时识别它   几个使用相同回调模块的事件处理程序。