gpt4 book ai didi

erlang - 监督具有相同模块/不同参数的多个 gen_servers

转载 作者:行者123 更新时间:2023-12-03 20:22:47 26 4
gpt4 key购买 nike

我有一个 OTP 应用程序,其中包含一个监督少数 gen_servers 的主管。一个典型的子规范如下:

{my_server,
{my_server, start_link, [123]},
permanent,
5000,
worker,
[my_server]}

到目前为止没有问题。

我现在想向主管结构添加额外的 gen_server,使用与上面相同的模块 Module/Fn,但参数不同,例如
{my_server_2,
{my_server, start_link, [123]},
permanent,
5000,
worker,
[my_server_2]}

我认为这会起作用,但没有:
=SUPERVISOR REPORT==== 15-Apr-2010::16:50:13 ===
Supervisor: {local,my_sup}
Context: start_error
Reason: {already_started,<0.179.0>}
Offender: [{pid,undefined},
{name,my_server_2},
{mfa,{my_server,start_link,[]}},
{restart_type,permanent},
{shutdown,5000},
{child_type,worker}]

每个子规范的第二个元素中的模块参数是否需要不同?

谢谢,

贾斯汀

最佳答案

我的猜测是 my_server 使用 gen_server:start_link/4 注册其名称,因此当第二个尝试启动时它不能因为名称已被占用。 gen_servers 要么必须在没有名称的情况下启动 (gen_server:start_link/3),要么必须使用不同的名称。

改变子规范的最后一个元素似乎很奇怪,它标识了 worker 使用的模块列表。这真的是你想要的吗?

关于erlang - 监督具有相同模块/不同参数的多个 gen_servers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com