Supervisor和DynamicSupervisor之间的区别

Nun*_*tiv 2 elixir erlang-supervisor

有人可以解释Elixir中Supervisor和DynamicSupervisor之间的区别吗?

Cyz*_*far 5

DynamicSupervisor是一个主管,旨在动态监督和管理许多孩子.

这是DynamicSupervisor的主要目的 - 您可以阅读Github上的完整提案

这里有一个很高的层次,即提案中列出的四个主要目标:

  • 简化两个Supervisor模块的API和用法.Supervisor模块中的大多数文档都包含条件:"如果管理程序类型为:simple_one_for_one,它将表现为X,其他表示为Y." 行为的差异与周围环境的差异使得主管难以学习,理解和使用;
  • 为主管本身可能成为可扩展性问题的情况提供开箱即用的管理员分片;
  • 提供内置的注册表,以避免开发人员不必使用像gproc这样的依赖关系或者像global这样的不正确的依赖关系;
  • 实现GenStage规范,以便动态主管可以根据需求订阅生产者并动态生成子项;