使用simple_one_to_one自动生成子项

时间:2016-06-25 18:19:11

标签: erlang

在主管中使用simple_one_to_one时,孩子们无法自动启动。通过这些例子,我应该运行supervisor:start_child(chat_liason_sup, DataForChild).来开始一个孩子。在现实世界中,我们想要执行erlang应用程序,而不是坐在控制台上启动孩子。我怎样才能让至少一个孩子自动开始?我考虑的一个技巧是同时启动一个正常的one_for_one,这反过来会启动simple_one_for_one个孩子。但看起来我只能在一个特定的主管中开始一种孩子......

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果您想要启动多种类型的儿童,请不要使用simple_one_for_onesupervisor:start_child/2接受child_spec()其他类型的主管。如果要自动启动子进程,请使用其他进程和多个主管。一种方法是使用一个主管用于发射器,第二个simple_one_for_one主管用于儿童。但是你可以根据需要使用尽可能多的主管。