gpt4 book ai didi

erlang - Simple_one_for_one 应用程序

转载 作者:行者123 更新时间:2023-12-01 12:58:39 25 4
gpt4 key购买 nike

我有一个负责启动 simple_one_for_one child 的主管。每个 child 实际上都是一个主管,有自己的树。每个 child 都从一个唯一的 ID 开始,所以我可以区分他们。然后使用 start_link(Id) 启动每个 gen_server,其中:

-define(SERVER(Id), {global, {Id, ?MODULE}}).
start_link(Id) ->
gen_server:start_link(?SERVER(Id), ?MODULE, [Id], []).

因此,每个 gen_server 都可以很容易地用 {global, {Id, module_name}} 寻址。

现在我想把这个 child 主管变成应用程序。所以,我妈妈主管应该开始申请而不是主管。这应该很简单,除了一个部分:将 ID 传递给应用程序。使用 ID 启动 supervisor 很容易:supervisor:start_child(?SERVER, [Id])。我该如何申请?我如何启动多个具有不同 ID 的同名应用程序(这样我就可以访问同一个 .app 文件)(这样我就可以用 supervisor:start_child(?SERVER, [Id]) 启动我的 child )?

如果我的问题不够清楚,这是我的代码。所以,目前,es_simulator_dispatcher开始es_simulator_sup .我想要这个:es_simulator_dispatcher 启动 es_simulator_app,它启动 es_simulator_sup。这就是它的全部:-)

提前致谢,迪 jack 斯特拉

最佳答案

应用程序不在其他任何东西下运行,它们是顶级抽象。当您使用 application:start/1 启动应用程序时,该应用程序由管理应用程序的应用程序 Controller 启动。应用程序包含代码和数据,并且可能在运行时包含进程的监督树,这些进程在运行时执行应用程序事情。由于应用程序的性质,运行应用程序的多次调用实际上没有意义。

我建议阅读 OTP Design Principles User's Guide了解 OTP 组件的描述、它们之间的关系以及它们的用途。

关于erlang - Simple_one_for_one 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088453/

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