如果静态启动子规范:
init(...) ->
{ok, {{RestartStrategy, MaxR, MaxT},
[ChildSpec, ...]}}.
但如果我动态启动子规范:
start_child(SupRef, ChildSpec) -> startchild_ret()
如何确定RestartStrategy,MaxR和MaxT?
答案 0 :(得分:2)
你无法在start_child或其他任何地方确定RestartStrategy,MaxR和MaxT。这些是主管的属性(不是孩子的),你只能在主管的init / 1回调中确定它们。
答案 1 :(得分:1)
鉴于RestartStrategy
是主管而不是其子主的属性,您可以在监督树中添加一个额外的层,并让多个主管作为 root 主管的子主。每个子监督员都会指定不同的RestartStrategy
。然后,您将向适当的主管添加子项。
来自Learn You Some Erlang的图片。