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"的基本应用程序,这在Erlang生态系统中是一个关键的概念。 在Erlang中,"Application"是一个组织代码的机制,它提供了模块之间的依赖管理和启动...
Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677
在Erlang中,"应用"(application)是组织代码的基本单元,它包含了模块、配置文件以及启动和停止应用程序的逻辑。在这个"Erlang入门:构建application练习5(监督树)"中,我们将探讨如何构建一个包含监督树的应用,...
confetti, Erlang配置提供程序/应用程序 纸屑五彩纸屑是你的Erlang应用程序的配置提供程序。基本上是 application:get_env/2 在类固醇上。特性管理控制台可以通过telnet维护部门访问将为你 love在运行时重新加载( ...
完成编码后,可以通过"Run"菜单选择"Erlang Application"来运行程序。 6. **调试Erlang程序**: Erlide还提供了调试器,可以在代码中设置断点,进行单步调试,查看变量值等操作。 **Erlide的主要功能** 1. **代码...
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编程语言中,进程是其核心特性之一,它们是并发执行的实体,类似于其他语言中的线程。在Erlang中,进程间通信(IPC)是通过消息传递来实现的,而`link`机制是这个通信模型中非常重要的一部分。本教程将通过...
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 ...
##### 1.2 Erlang Distributed Application Erlang的分布式应用模型允许开发者轻松扩展应用的规模。分布式应用由多个节点构成,节点之间通过轻量级的进程通信机制交换消息。这种设计使得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 ...
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 ...
3. **部署到节点**:将释放包复制到目标Erlang节点的`ebin`目录下,或者使用`release_handler`模块的`add_application/2`或`install_release/1`函数进行远程部署。 4. **启动应用**:调用`application:start/1`或`...
4. **OTP应用和监督**:在Erlang和OTP中,应用(Application)是一个组织代码和资源的单元。监督(Supervision)则是OTP的一个关键概念,它描述了进程树的组织方式和错误恢复策略。这通常是构建容错系统时不可或缺的...
### Erlang Debugger 应用详解 #### 一、概述 **Erlang Debugger** 是一个图形化工具,用于调试和测试 Erlang 程序。它允许用户设置断点、单步执行代码以及查看和修改变量值等功能。本文将详细介绍 Debugger 的...
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.