多个 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
错误。
我完全是 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
错误。