Erlang 一名主管有多个子女

Erlang 一名主管有多个子女,erlang,elixir,otp,Erlang,Elixir,Otp,我是长生不老药的初学者,然后我尝试(受《长生不老药编程手册》示例的启发)创建一个主管,可以有几个相同类型的孩子。我弄错了 {:error, {{:EXIT, {{:badmatch, {:error, {:already_started,#PID<0.122.0>}}},... {:error,{:EXIT,{{:badmatch,{:error,{:ready_start,#PID}},{,。。。 也许我误解了主管的用法,必须为每个流程创建一个主管 有人能告诉我在这种情况下监

我是长生不老药的初学者,然后我尝试(受《长生不老药编程手册》示例的启发)创建一个主管,可以有几个相同类型的孩子。我弄错了

{:error, {{:EXIT, {{:badmatch, {:error,  {:already_started,#PID<0.122.0>}}},...
{:error,{:EXIT,{{:badmatch,{:error,{:ready_start,#PID}},{,。。。
也许我误解了主管的用法,必须为每个流程创建一个主管

有人能告诉我在这种情况下监管者的正确用法吗?

(我不使用长生不老药,所以这些都使用Erlang语法)

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

主管不关心孩子的“类型”(在您使用它的意义上)。孩子规范包含一个
id
、一个
start
函数以及一些与您的问题无关的其他内容

如果
id
不同,您可以对多个子项使用相同的
start
功能


我怀疑您遇到的困难是您的孩子有一个名字。也就是说:在
init
函数中,您调用了
gen\u server:start\u link/4
,传递了类似
{local,?MODULE}的内容
。这些进程都试图使用相同的名称注册,因此您得到的
已启动
错误。

您还可以包含引发该错误的代码吗?还可以查看
simple\u one\u for\u one
类型的主管,他们可以定义一个子级,但动态生成多个子级。您是对的,我尝试了o覆盖工人创建中的名称,该名称似乎不起作用。非常感谢:)