理解Erlang进程
来源:互联网 发布:两个淘宝店用一个网络 编辑:程序博客网 时间:2024/05/17 23:59
对于一种编程语言,除去具体的语法部分(在写程序是可以参考手册),在头脑中形成它运行时的数据对象描述方式和交互方式,是真正理解它的关键所在。Erlang Process正如在教程和文档中描述的,是erlang语言非常重要的对象,本文将从各个方面描述一下对于erlang进程的理解。
主动对象
“主动对象”这种设计模式我最早是在ACE中接触到的,在ACE中通过ACE_Task实现。ACE_Task本身运行于一个OS线程上,通过自己的消息队列与外部对象进行交互。虽然C++在内存访问上没有限制,但是一般ACE_Task内部所管理的数据都不会允许外部直接访问,所以也就成为了本线程私有的数据。ACE_Task会阻塞到消息队列的接受,等待外部的消息,对数据进行处理。
Erlang process基本上与ACE_Task一样,只不过不是运行于线程,而是运行于由erlang VM在用户态调度的虚拟进程。由于erlang process比线程轻量很多,所以可以同时创建出成千上万的erlang process,每个都主动的进行运算,从而形成erlang并行计算的基础。一般会把一个erlang process需要处理的数据当作这个process function的参数传递给这个process,当作个process私有数据处理。
容错单位
实现可容错系统也是使用erlang的一个重要目的。其实整体来看,实现容错处理的基础也是erlang process。拿C++举例,由于一个OS进程中数据访问时没有限制的,各个模块的依赖性很强,所以如果程序运行时出现了致命错误(比如非法指针访问)一般来说很难进行恢复,会导致整个进程挂掉。而erlang process是erlang运行的基本单位,所有的运行错误都会发生在一个具体的erlang process中。由于Erlang process相互之间没有数据共享或直接的数据引用,所以一个erlang process挂掉,不会影响到其他的erlang process。Mnesia可以被实现为一个高效的本地数据库的原因也在于此:Mnesia虽然与其他的erlang process在一个OS进程中,但是不用担心其他erlang process的挂掉会影响到Mnesia。
- 理解Erlang进程
- erlang进程异常
- erlang进程相关信息
- Erlang 进程字典
- erlang杂记三 ---- 进程
- erlang --进程生成测试
- erlang进程相关
- erlang进程相关信息
- ERLANG 进程整理
- ERLANG 进程字典
- erlang进程相关信息
- Erlang-实现进程环
- erlang创建进程
- erlang数据类型进程
- Erlang进程通信
- erlang 进程的 hibernate
- erlang的进程池
- erlang进程环
- sql2005 缩小LDF文件
- 优秀网页设计:35个吸引眼球的精美作品集网站
- C#制作Windows service服务系列二--演示一个定期执行的windows服务及调试
- poj 2194(字符串的DP)
- Python字符集编码和文件读写
- 理解Erlang进程
- android 联网 HttpClient
- android相关资料收集
- C#制作Windows service服务系列三--制作可控制界面的Windows服务(windows service)
- Movie Texture
- .NET垃圾回收的机制解释
- 紧迫感,你倒底还是来了呢?
- Eclipse中设置查看SWT/JFace源码
- 批量删除.trc日志