`
做一行爱一行吧
  • 浏览: 23524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

erlang的application

 
阅读更多

       erlang 的 application, 我第一次是在工作中接触到的,简写都叫app,那时候还犯糊涂,总和手机app弄错,其实erlang的app就是一堆module的集合,通过app将关联性强的module集合在一起以便于管理和监督指定的进程,以前我一直以为一般的erlang项目的层次结构为  Nodes -> apps -> super ->process就是这样,书上也说过,app就是用来管理进程的,但是我始终还是觉着真正起到管理作用的都是super行为。

       之所以想到说说app主要是因为前面还有一个关于进程注册的问题没有解决,一直想知道一个确切的结果!

 

这里我们假设是在做游戏的场景吧,我们就以map_app.app为例来写一个配置文件,这里的参数我实在是记不住了,参看一一下其他人的写了一点注释

{application, map_app,                                               %%app名称
[{description,"the application which createed the processes of map"},%%描述
 {vsn,"2.0"},                                                        %%版本号
 {modules,[]},                                                       %%包含的module,写空即可
 {registered,[]},                                                    %%使用什么样的进程名
 {maxP,Num},                                                         %%进程最大值
 {maxT,Time},                                                        %%app运行时间 单位毫秒
 {included_applications,[]}                                          %%加载但不启动的子app
 {env,[]}                                                            %%app的env
 {applications,[kernel,stdlib]},                                     %%依赖的application
 {mod,{map_app,[]}}                                                  %%app的启动模块和参数                                        
 ]
}.
下面来写一下加载app的代码
-mdoule(map_app).
-behaviour(application).
-export([
	 start/2,
	 stop/1,
	 start/0
        ]).

start()->
	application:start(?MODULE,     permanent).

start(_Type, _StartArgs) ->  
	{ok, _MapSupPid}  = start_map_sup().
    
stop(_State) ->  
    ok.

start_map_sup()->
	case map_sup:start_link() of
		{ok, Pid} ->
			{ok, Pid};
		Error ->
			Error
	end.
 这里,app的加载,application作为一个行为框架,他会自动加载start/0和start/2,有时间来看看源码是如何操作的,这里我们启动了一个super,作为一个监督进程,也就是管程。用以监督和管理通过其启动的进程
把super的代码也写好
-module(map_sup).

-behaviour(supervisor).
-export([start_link/0, init/1]).

start_link()->
	supervisor:start_link({local,?MODULE}, ?MODULE, []).

init([]) ->
	{ok,{{one_for_one,1000,2}, []}}.
 至此,我们就已经将一个小的application写好了,测试以后就可以开始慢慢扩展程序了。
最近发现,虽然工作中做了不少erlang的东西,可是回过头还是有好多迷糊的地方,这样也好,也能再巩固一下自己的基础,矫正一下学习的方法和态度
明天再把supervisor的东西扩展到下程序中
 

 

分享到:
评论

相关推荐

    Erlang入门:构建application练习2

    在本教程中,我们将深入探讨如何使用Erlang构建一个名为"Application"的基本应用程序,这在Erlang生态系统中是一个关键的概念。 在Erlang中,"Application"是一个组织代码的机制,它提供了模块之间的依赖管理和启动...

    Erlang/OTP Application完整例子

    Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677

    Erlang入门:构建application练习5(监督树)

    在Erlang中,"应用"(application)是组织代码的基本单元,它包含了模块、配置文件以及启动和停止应用程序的逻辑。在这个"Erlang入门:构建application练习5(监督树)"中,我们将探讨如何构建一个包含监督树的应用,...

    confetti, Erlang配置提供程序/应用程序.zip

    confetti, Erlang配置提供程序/应用程序 纸屑五彩纸屑是你的Erlang应用程序的配置提供程序。基本上是 application:get_env/2 在类固醇上。特性管理控制台可以通过telnet维护部门访问将为你 love在运行时重新加载( ...

    erlide (eclipse搭建erlang插件)

    完成编码后,可以通过"Run"菜单选择"Erlang Application"来运行程序。 6. **调试Erlang程序**: Erlide还提供了调试器,可以在代码中设置断点,进行单步调试,查看变量值等操作。 **Erlide的主要功能** 1. **代码...

    Erlang Run-Time System Application

    Erlang Runtime System Application, ERTS, contains functionality necessary to run the Erlang system. Note: By default, ERTS is only guaranteed to be compatible with other Erlang/OTP components from the...

    Erlang入门:构建application练习4(进程link的作用)

    在Erlang编程语言中,进程是其核心特性之一,它们是并发执行的实体,类似于其他语言中的线程。在Erlang中,进程间通信(IPC)是通过消息传递来实现的,而`link`机制是这个通信模型中非常重要的一部分。本教程将通过...

    可在ubuntu上安装erlang的deb包

    erts - the Erlang runtime system application; kernel - code necessary to run the Erlang runtime system itself; sasl - the system architecture support libraries application; stdlib - modules for ...

    Erlang深度分析

    ##### 1.2 Erlang Distributed Application Erlang的分布式应用模型允许开发者轻松扩展应用的规模。分布式应用由多个节点构成,节点之间通过轻量级的进程通信机制交换消息。这种设计使得Erlang非常适合于构建高可用...

    kernel-Erlang

    Erlang/OTP consists of Kernel and STDLIB. The Kernel application contains the following services: • application controller, see application(3) • code • disk_log • dist_ac, distributed application ...

    Erlang and OTP in Action MEAP May 2010

    Chapter Nine: Converting the Cache into a Distributed Application Chapter Ten: Packaging, Services and Deployment Part Three: Working in a Modern Environment Chapter Eleven: Non-native Erlang ...

    Erlang应用部署与热代码替换--理解2

    3. **部署到节点**:将释放包复制到目标Erlang节点的`ebin`目录下,或者使用`release_handler`模块的`add_application/2`或`install_release/1`函数进行远程部署。 4. **启动应用**:调用`application:start/1`或`...

    Erlang and OTP实战

    4. **OTP应用和监督**:在Erlang和OTP中,应用(Application)是一个组织代码和资源的单元。监督(Supervision)则是OTP的一个关键概念,它描述了进程树的组织方式和错误恢复策略。这通常是构建容错系统时不可或缺的...

    Erlang Debugger

    ### Erlang Debugger 应用详解 #### 一、概述 **Erlang Debugger** 是一个图形化工具,用于调试和测试 Erlang 程序。它允许用户设置断点、单步执行代码以及查看和修改变量值等功能。本文将详细介绍 Debugger 的...

    erlang 18-release

    Some highlights of the release are: ssl: Add possibility to downgrade an SSL/TLS connection to a tcp connection, and give ... See config parameter error_logger_format_depth in the Kernel application.

Global site tag (gtag.js) - Google Analytics