在学习Erlang的过程中,对模块与进程的关系比较模糊,下面对其做个总结。从大的方面来说,进程是程序运行时的概念,而模块是开发中的概念,两者会有怎样的联系呢?从静态代码来看,Erlang程序由模块(.erl)构成,每个模块完成一定的功能?而从运行时环境来看,Erlang程序实际上是运行在Erlang虚拟机上N个进程的运行和交互过程。
Erlang模块,同其它语言一样,可以分成接口和实现。接口,从广义上来说,定义了某个模块的使用方式,实现即是这个模块的内部结构过程等。在Erlang中,接口通常使用客户函数(Client Functions)的形式提供,模块间的通信通常使用消息发送的方式,客户函数封装了这种消息发送接收机制,使得使用Erlang模块非常简单,就是个函数调用。
上图表达了Erlang模块与进程间的关系,server.erl定义了一个模块,后台的实现有进程s1、s2、s3、s4和supervisor,其中supervisor是监控进程。而client.erl为客户模块,在xxx函数中使用到了server,其本身实现有3个进程c1、c2和c3。
阅读(835) | 评论(0) | 转发(0) |