Erlang simple_one_for_one start_child()返回已启动的

Erlang simple_one_for_one start_child()返回已启动的,erlang,otp,erlang-supervisor,simple-one-for-one,Erlang,Otp,Erlang Supervisor,Simple One For One,我有一个主管,他应该为工人们开始简单的工作。当我第一次调用start\u child()时,一切都很顺利。但是,当我第二次这样做时,我得到{error,{ready_start,}}。为什么simple\u one\u for\u one主管会给我返回一个已经开始的?我错过了什么 代码如下:,。您正在为gen_服务器注册一个(本地)名称。一旦启动了一个,就不能用相同的名称启动另一个 如果改用gen_server:start_link/3,则从当前gen_server:start_link/4调用

我有一个主管,他应该为工人们开始简单的工作。当我第一次调用
start\u child()
时,一切都很顺利。但是,当我第二次这样做时,我得到
{error,{ready_start,}}
。为什么
simple\u one\u for\u one
主管会给我返回一个已经开始的
?我错过了什么

代码如下:,。

您正在为gen_服务器注册一个(本地)名称。一旦启动了一个,就不能用相同的名称启动另一个


如果改用gen_server:start_link/3,则从当前gen_server:start_link/4调用中删除第一个参数,您应该能够启动多个。

您将非常困惑于您的gen server处理消息的方式,即生成一个子服务器向其自身发送消息,然后在等待接收该消息时阻塞。为什么?我在单独的子系统中执行这项工作,以防止gen_服务器崩溃。那是件坏事吗?建议将不胜感激:-)如果gen_服务器崩溃会是一场灾难吗?它将由主管重新启动。如果您担心错误,请使用
来包装调用,而不是尝试。。。抓住。。。结束
。虽然进程很便宜,但不必要地创建它们并没有好处,这里也没有并发性。您能在这里发布代码吗?如果这一联系中断,这个问题将毫无用处。