当我们给supervisor指定需要创建的子进程的时候,会指定M,F,A,如果是simple_one_for_one的策略的话,启动子进程的方式是supervisor:start_child(SupName, OtherArgs),这种方式可以根据调用者的需求传不同的参数给需要启动的子进程的方法。和最初的参数合并成一个数组,A ++ OtherArgs。那么这个时候就有个问题了,既然参数不一致,那么在子进程挂掉的情况下,怎么重新启动对应的子进程呢???
原来supervisor会把每个自己管理的child的启动信息都存储在自己的进程字典中,Key就是Child的Pid,这样的话,如果某个Child挂掉,他的supervisor会收到一个{'EXIT',ChildPid,Reason}的消息,然后根据消息中的ChildPid去进程字典中找到这个Child的启动信息,重新启动,并更新进程字典中的信息。
supervisor的源代码就在:https://github.com/erlang/otp项目下的otp/lib/stdlib/src/supervisor.erl中,可以没事看看。
相关推荐
### Erlang Supervisor Behaviour详解 #### 一、Erlang Supervisor简介与作用 Erlang Supervisor是Erlang四大Behaviour之一,主要负责管理监控树(supervision tree)中的子进程,确保系统的稳定运行。在Erlang...
7. **OTP(Open Telecom Platform)**:OTP是Erlang的标准库,提供了一套用于构建可靠、可扩展、容错的分布式系统的框架和库,包括行为模式如GenServer、Supervisor和GenEvent等。 深入学习Erlang,你需要掌握以下...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
- **OTP(开放电信平台)**:Erlang OTP是一套库和设计原则,提供了构建可靠系统的框架,包括Mnesia数据库、Event Manager、Supervisor和GenServer等行为模块。 学习Erlang时,你需要掌握以下核心概念: - **BEAM...
书中可能讲解了OTP的设计原则和组件,如GenServer、GenEvent和Supervisor等。 3. **错误处理与容错**:Erlang推崇“let it crash”哲学,鼓励程序在遇到错误时快速失败并重启,而不是尝试修复。书里可能会讨论如何...
OTP的引入进一步强化了这种并发能力,提供了诸如GenServer、Supervisor、GenEvent等行为模式,以规范化并发程序的设计。这些模式帮助开发者构建可复用、容错的组件,降低了系统的复杂性。 总的来说,如果你想要深入...
3. **行为模式**:如GenServer、GenEvent和Supervisor,它们提供了一种组织和管理Erlang进程的标准方式。 4. **性能优化**:探讨Erlang程序的性能调优技巧,如避免全局变量、合理利用并行性等。 5. **并发与容错**:...
书中的"Manning.Erlang.and.OTP.in.Action.2010.pdf"很可能是该书的电子版,读者可以通过这个PDF文件全面学习Erlang和OTP的知识,包括理论介绍、代码示例和实际案例分析,从而提升在并发处理和分布式系统开发方面的...
OTP是Erlang生态系统的核心,提供了一系列库和设计模式,如行为(Supervisor、GenServer等)、应用程序框架和工具,帮助开发者构建可靠、可维护的系统。 8. **Erlang源码分析** 配套的源码文件可以帮助读者更好地...
- **erlang深度分析.pdf**:这本书可能提供了Erlang的高级概念和深入解析,包括其并发模型、错误处理策略以及实际项目中的最佳实践。 - **51CTO下载-Erlang中文手册.pdf**:这份文档可能是51CTO网站提供的Erlang中文...
8. **错误处理**:Erlang鼓励使用“失败-快速”策略,即在检测到错误时立即崩溃,然后由Supervisor树自动重启,以恢复系统的稳定状态。 9. **模式匹配**:Erlang中的模式匹配是其语法的一个强大特性,可以方便地...
通过对`example`代码的分析和测试,我们可以深入理解`Supervisor`的工作原理,学习如何根据实际需求选择和配置重启策略,以及如何优雅地处理进程故障,增强系统的容错能力。这将有助于我们在构建高可用性的分布式...
9. 高可用性和容错性:OTP提供了一套名为Supervisor的行为,用于创建和管理进程树,当子进程失败时,Supervisor可以自动重启它们,确保系统的持续运行。 总结起来,"otp_src_21.3.tar.gz"是一个包含Erlang OTP框架...
1. **Erlang OTP(Open Telecom Platform)**:Erlang OTP是一个标准库,提供了强大的模块化设计和容错机制,包括行为模式如GenServer、GenEvent和Supervisor等,这些对于构建可靠的TCP服务器至关重要。 2. **...
OTP包括一系列的行为模式,如GenServer、GenEvent和Supervisor,这些帮助开发者轻松实现状态管理、事件处理和容错机制。 此外,Erlang的REPL(Read-Eval-Print Loop)环境允许开发者快速测试代码并查看结果,这...
它包括Erlang虚拟机(BEAM)、进程间通信机制、错误处理工具以及一系列预先设计好的行为模式(Behaviours),如GenServer、GenEvent和Supervisor,这些模式提供了强大的容错和恢复能力。 **2. ERTS - Erlang Run-...
Erlang是一种面向并发的、函数式编程语言,特别适合于构建高可用性和容错性的分布式系统。在Erlang中,"应用"(application)是组织代码的基本单元,它包含了模块、配置文件以及启动和停止应用程序的逻辑。在这个...
Erlang OTP 19_win64是一款专为Windows 64位系统设计的Erlang软件开发工具包,它包含Erlang编程语言和OTP(Open Telecom Platform)框架。Erlang是一种强大的、动态类型的函数式编程语言,特别适合构建高可用性、...
4. **OTP(Open Telecom Platform)框架**:OTP提供了一组标准库和设计模式,用于构建可靠的、可维护的系统,包括Mnesia数据库、Supervisor进程监控和GenServer行为模式等。 5. **函数式编程**:Erlang采用函数式...
OTP提供了一系列预定义的行为(如GenServer、GenEvent和Supervisor),它们是实现可靠、容错服务的基石。Supervision树是OTP的核心概念,用于组织和管理进程,确保系统在部分故障时能够自动恢复。 总之,Erlang设计...