多个孩子为主管

kno*_*ito 2 erlang elixir erlang-otp

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

{:error, {{:EXIT, {{:badmatch, {:error,  {:already_started,#PID<0.122.0>}}},...
Run Code Online (Sandbox Code Playgroud)

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

在这种情况下,任何人都可以向我解释主管的正确用法吗?

Rog*_*mbe 7

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

创建一个可以有几个相同类型的孩子的主管

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

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

我怀疑你遇到困难的地方是你的孩子有名字.那就是:在你的init功能中,你已经打电话gen_server:start_link/4,传递类似的东西{local, ?MODULE}.这些进程都尝试使用相同的名称注册,因此您会收到already_started错误.