接上一篇gen_fsm的,我们接着看一个用的比较多的也比较重要的模式——监督者行为模式(generic supervisor behavior),他为开发人员承担了意外错误的处理和恢复的责任。该行为以确定的和一致的方式处理监控、重启策略、竞态条件和边界情况等。
监督树
监督者指的是 类以监督和管理子进程作为其唯 任务的进程。它们分裂出一些进程并将它们与自己相链接( link )。监督者通过捕捉退出( trapping exits )井接收 EXIT 信号,使得当出现意外状况时,可以采取适当的应对措施。措施多种多样,从重启子进程到不启动,到终止部分或者全部的与监督者链接的子进程,甚至终止监督者自身等。子进程既可以是普通的工作进程,也可以是其他监督者进程。
容错是通过创建监督树来实现的,其中监督者是节点,而工作者是树叶,各级别的监督者负责监视并处理自己启动的子树中的子进程。
![image-20201224152055456](https://gitee.com/Nicer_feng/blog2-sywork/raw/master/img/image-20201224152055456.png)
my_supervisor
启动部分
我们先看启动监督者和子进程的代码
-module(