在主管中使用simple_one_to_one
时,孩子们无法自动启动。通过这些例子,我应该运行supervisor:start_child(chat_liason_sup, DataForChild).
来开始一个孩子。在现实世界中,我们想要执行erlang应用程序,而不是坐在控制台上启动孩子。我怎样才能让至少一个孩子自动开始?我考虑的一个技巧是同时启动一个正常的one_for_one
,这反过来会启动simple_one_for_one
个孩子。但看起来我只能在一个特定的主管中开始一种孩子......
答案 0 :(得分:1)
当我需要流程工厂时,我使用simple_one_for_one策略。一般来说,我有第一个使用one_for_one或one_for_all策略的主管,其子女是
这样做我利用OTP来管理所有过程的生命周期。
答案 1 :(得分:0)
如果您想要启动多种类型的儿童,请不要使用simple_one_for_one
。 supervisor:start_child/2
接受child_spec()
其他类型的主管。如果要自动启动子进程,请使用其他进程和多个主管。一种方法是使用一个主管用于发射器,第二个simple_one_for_one
主管用于儿童。但是你可以根据需要使用尽可能多的主管。