文档详细介绍了以下内容:
当supervisor启动时,它会遍历所有子规范并 然后按照定义的顺序启动每个子项。这是由 调用子级中 :start 键下定义的函数 规范,通常默认为 start_link/1。
考虑一个有两个进程需要启动、来自两个规格的 Supervisor。
当第一个进程启动时,会生成一些值:
@impl GenServer
def init(_arg) do
...
# Note that the value does not have to be in the state.
{:ok, some_value}
end
我们如何将此值作为参数传递给第二个规范?
{SomeWorker, value_from_first_worker}
第一个工作人员应该公开某种 API 供第二个工作人员调用。
此外,由于第二个工作人员依赖于第一个工作人员,您可能需要设置主管的
strategy: :rest_for_one
。