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的东西扩展到下程序中
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值