【问题标题】:Automatically spawning children with simple_one_to_one使用 simple_one_to_one 自动生成孩子
【发布时间】:2016-06-28 03:18:08
【问题描述】:

在主管中使用simple_one_to_one 时,子级没有自动启动。通过示例,我应该运行supervisor:start_child(chat_liason_sup, DataForChild). 来启动一个孩子。在现实世界中,我们希望执行 erlang 应用程序,而不是坐在控制台上启动子进程。如何让至少一个孩子自动开始?我考虑的一个技巧是同时启动一个正常的one_for_one,这反过来又会启动simple_one_for_one 孩子。但看起来我只能在给定的主管中开始一种孩子......

【问题讨论】:

    标签: erlang


    【解决方案1】:

    当我需要一个流程工厂时,我使用 simple_one_for_one 策略。一般来说,我有一个使用 one_for_one 或 one_for_all 策略的第一个主管,其孩子是

    • 负责应用程序的一部分的服务器,其工作包括启动多个相同的进程
    • simple_one_for_one 主管。

    这样做我利用 OTP 来管理所有流程的生命周期。

    【讨论】:

      【解决方案2】:

      如果要启动不止一种孩子,不要使用simple_one_for_onesupervisor:start_child/2 接受 child_spec() 用于其他类型的主管。如果要自动启动子进程,请使用另一个进程和多个主管。一种方法是使用一个主管作为启动器,第二个simple_one_for_one 主管用于儿童。但是您可以使用任意数量的主管。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        • 2018-08-30
        • 2013-11-04
        • 1970-01-01
        • 2019-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多