2

如果静态启动子规范:

init(...) ->
    {ok, {{RestartStrategy, MaxR, MaxT},
          [ChildSpec, ...]}}.

但是,如果我动态启动子规范:

start_child(SupRef, ChildSpec) -> startchild_ret()

如何确定 RestartStrategy、 MaxR 和 MaxT ?

4

2 回答 2

2

您无法在 start_child 或其他任何地方动态地确定 RestartStrategy、MaxR 和 MaxT。这些是主管的属性(不是孩子的),您只能在主管的 init/1 回调中确定它们。

于 2013-04-03T05:15:38.480 回答
1

鉴于RestartStrategy是主管而不是其子级的属性,您可以在监督树中添加一个额外的层,并将多个主管作为主管的子级。每个下级主管将指定不同的RestartStrategy. 然后,您会将孩子添加到相应的主管。

在此处输入图像描述

图片来自Learn You Some Erlang

于 2013-04-03T15:12:16.300 回答