多个 children 主管

multiple children for a supervisor

我完全是 elixir 的初学者,然后我尝试(受 elixir 编程书籍示例的启发)创建一个 可以有多个 children 相同类型的监督者。我收到错误

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

可能是我理解错了supervisor的用法,必须为每个进程创建一个supervisor

谁能解释一下在这种情况下主管的正确用法?

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

create a supervisor that can have several children of the same type

上司不在乎 child 人的 "type"(在你使用它的意义上)。 child 规范包含一个 id、一个 start 函数,以及一些与您的问题无关的其他内容。

如果id不一样,可以对多个children使用相同的start函数。

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