supervisor是erlang的一个行为框架,他的工作重心在于管理和监督我们启动的进程,并对所有进程安排一定的策略
把上回关于app的代码直接拿来用一下,然后我们对map_sup.erl增加一些新的东西进去,上次我们只是写了简单的启动模式,
-module(map_sup). -behaviour(supervisor). -export([start_link/0, init/1]). start_link()-> supervisor:start_link({local,?MODULE}, ?MODULE, []). init([]) -> erlang:process_flag(priority, high), MapManager = {map_manager,{map_manager,start_link,[]}, permanent,2000,worker,[map_manager]}, List = [MapManager], {ok,{{one_for_one,1000,2}, [MapManager]}}.
MapManager 中的参数中指定了map_manager这个module,我们简单写一下map_manager(这个文件的作用是管理进程,包括了进程的创建和停止等对进程的详细操作)。这里我们使用otp中最常用的行gen_server,otp(Open telecom platform,请记住全称)
-module(map_manager). -behaviour(gen_server). -export([start_link/0]). -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2]). start_link()-> gen_server:start_link({local,?MODULE},?MODULE,[],[]).%%这就是gen_server启动一个进程的方式 init([]) -> self() ! begin_map, {ok, #state{}}. handle_info(begin_loading_map, State) -> {noreply, State}; handle_info(Event, State) -> ?ERRMSG("receive unknown message:~p~n", [Event]), {noreply, State}. handle_call(Event, _From, State) -> {reply, Reply, State}; handle_call(_Request, _From, State) -> Reply = ok, {reply, Reply, State}. handle_cast(_Msg, State) -> {noreply, State}. terminate(_Reason, _State) -> ok. code_change(_OldVsn, State, _Extra) -> {ok, State}.
这里我还没想好要写些什么来测试,当我们start_link的时候我们要为我们这个进程配置一些参数,或者说,我们的进程要有一个状态才能去完成我们的逻辑,所以init方法就是初始化一个进程的方法,每次调用start_link,init都会按照需要来初始化一个进程,这里我们会吧ets放到进程中,这就是一个基础的框架,明天想想再来扩展一下.
相关推荐
### Erlang Supervisor Behaviour详解 #### 一、Erlang Supervisor简介与作用 Erlang Supervisor是Erlang四大Behaviour之一,主要负责管理监控树(supervision tree)中的子进程,确保系统的稳定运行。在Erlang...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
- **OTP(开放电信平台)**:Erlang OTP是一套库和设计原则,提供了构建可靠系统的框架,包括Mnesia数据库、Event Manager、Supervisor和GenServer等行为模块。 学习Erlang时,你需要掌握以下核心概念: - **BEAM...
受 Erlang Supervisor 和 Process 类的启发,它们通过将协程彼此隔离来启用容错并行应用程序,从而防止协程中的异常使主要 nodejs 进程崩溃。安装 npm install domain-supervisor用法 var Supervisor = require('...
书中可能讲解了OTP的设计原则和组件,如GenServer、GenEvent和Supervisor等。 3. **错误处理与容错**:Erlang推崇“let it crash”哲学,鼓励程序在遇到错误时快速失败并重启,而不是尝试修复。书里可能会讨论如何...
OTP的引入进一步强化了这种并发能力,提供了诸如GenServer、Supervisor、GenEvent等行为模式,以规范化并发程序的设计。这些模式帮助开发者构建可复用、容错的组件,降低了系统的复杂性。 总的来说,如果你想要深入...
8. **错误处理**:Erlang鼓励使用“失败-快速”策略,即在检测到错误时立即崩溃,然后由Supervisor树自动重启,以恢复系统的稳定状态。 9. **模式匹配**:Erlang中的模式匹配是其语法的一个强大特性,可以方便地...
OTP是基于Erlang的一套设计原则和库,它提供了标准的组件和模式,如GenServer、GenEvent和Supervisor等,用于构建可靠的分布式系统。OTP的核心理念是模块化、可复用和容错性,通过这些组件,开发者可以快速构建出...
OTP包括一系列的行为模式,如GenServer、GenEvent和Supervisor,这些帮助开发者轻松实现状态管理、事件处理和容错机制。 此外,Erlang的REPL(Read-Eval-Print Loop)环境允许开发者快速测试代码并查看结果,这...
1. **Erlang OTP(Open Telecom Platform)**:Erlang OTP是一个标准库,提供了强大的模块化设计和容错机制,包括行为模式如GenServer、GenEvent和Supervisor等,这些对于构建可靠的TCP服务器至关重要。 2. **...
9. 高可用性和容错性:OTP提供了一套名为Supervisor的行为,用于创建和管理进程树,当子进程失败时,Supervisor可以自动重启它们,确保系统的持续运行。 总结起来,"otp_src_21.3.tar.gz"是一个包含Erlang OTP框架...
在Erlang编程环境中,`Supervisor`是 OTP(Open Telephony Platform)设计模式中的一种,它是构建可靠、容错系统的重要组成部分。本篇博客的附件着重探讨了如何使用Erlang的`Supervisor`模块,并通过编写代码来演示...
Erlang是一种面向并发的、函数式编程语言,特别适合于构建高可用性和容错性的分布式系统。在Erlang中,"应用"(application)是组织代码的基本单元,它包含了模块、配置文件以及启动和停止应用程序的逻辑。在这个...
4. **OTP(Open Telecom Platform)框架**:OTP提供了一组标准库和设计模式,用于构建可靠的、可维护的系统,包括Mnesia数据库、Supervisor进程监控和GenServer行为模式等。 5. **函数式编程**:Erlang采用函数式...
OTP提供了一系列预定义的行为(如GenServer、GenEvent和Supervisor),它们是实现可靠、容错服务的基石。Supervision树是OTP的核心概念,用于组织和管理进程,确保系统在部分故障时能够自动恢复。 总之,Erlang设计...
OTP是Erlang生态系统的核心,提供了一系列库和设计模式,如行为(Supervisor、GenServer等)、应用程序框架和工具,帮助开发者构建可靠、可维护的系统。 8. **Erlang源码分析** 配套的源码文件可以帮助读者更好地...
OTP是Erlang的一个重要框架,提供了许多预定义的行为模式和库,如GenServer、GenEvent、Supervisor等,它们帮助开发者遵循良好的软件工程实践,实现模块化、容错和监控。 **Erlang的手册与中文教程** `...
它包括Erlang虚拟机(BEAM)、进程间通信机制、错误处理工具以及一系列预先设计好的行为模式(Behaviours),如GenServer、GenEvent和Supervisor,这些模式提供了强大的容错和恢复能力。 **2. ERTS - Erlang Run-...
理解并熟练运用OTP组件,如GenServer、GenEvent和Supervisor,是成为一名熟练的Erlang开发者的关键。 总的来说,“Erlang资料大全”这个压缩包提供的资源将帮助学习者从零开始了解Erlang,掌握其基本语法、并发模型...
4. **Supervisor**:在Erlang OTP(开放电信平台)中,Supervisors是行为模式之一,用于实现容错和重启策略。`bank1_sup`模块应包含一个`supervisor`行为的实现,负责启动和监控子进程。 5. **模块和功能**:在`src...