多个孩子为主管

时间:2016-10-25 08:28:11

标签: erlang elixir otp

我是elixir的初学者,然后我尝试(灵感来自编程elixir书的例子)来创建一个主管,可以有几个相同类型的孩子。我收到了错误

{:error, {{:EXIT, {{:badmatch, {:error,  {:already_started,#PID<0.122.0>}}},...

也许我误解了主管的使用,并且必须为每个流程创建一个主管。

在这种情况下,有人能解释一下主管的正确用法吗?

1 个答案:

答案 0 :(得分:7)

(我不做Elixir,所以这都使用Erlang语法)

  

创建一个可以拥有多个相同类型子项的主管

主管不关心孩子们的“类型”(在某种意义上说,你正在使用它)。子规范包含idstart函数以及与您的问题无关的一些其他内容。

如果id不同,您可以为多个孩子使用相同的start功能。

我怀疑你遇到困难的地方是你的孩子有名字。也就是说:在init函数中,您调用gen_server:start_link/4,传递{local, ?MODULE}之类的内容。这些进程都尝试使用相同的名称进行注册,因此您会收到already_started错误。