Erlang并发与并发编程(一)

Erlang是一种函数式编程语言(FP:function programming),它的特长就是面向多核编写并发程序。因此,Erlang中的并发和分布式编程也是我们学习的重点。本文讲述Erlang并发的相关概念,以及并发编程的实例(本文思想基本来自于《Elang programming》,中译为:《Erlang程序设计》)。

Erlang进程的工作方式:和一般的编程语言不同,Erlang进程之间没有共享内存,每一个进程都有自己的内存,想要修改其它进程的内存,你只能向它发送一个消息,然后希望它能收到而且能理解这个消息。当然,要想确认其它进程已经收到了你得消息并修改了自己的内存,你只能向它发问(通过发送消息),这就是Erlang的交互方式。例如:
  Sue:你还Bill,我的电话号码是45678912.
  Sue:你听清楚了吗?
  Bill:当然,你的电话号码是45678912。

这种交流方式就是我们人类的交流方式,同时也是Erlang进程的工作方式。由于Erlang进程不共享内存,因此也就无须锁定内存,也就是说Erlang既没有锁也不用钥匙,这就避免了在分布式软件系统中使用锁和钥匙带来的一些故障问题。既然Erlang中进程与进程之间是通过消息传递的,那么如果有进程死了,其他进程会注意到吗?Erlang有它的基本原则,有它的错误侦测机制。

Erlang错误侦测机制:进程可以互相链接,如果一个进程消亡,那么另一个进程就会得到一条消息,被告知第一个进程消亡,及其原因。其它进程是如何被告知的呢?Erlang是这样的,一个进程消亡的时候会在生命的最后一口气中奋力呼喊他因何而亡。比如,当一个进程消亡的时候说的可能是“我死于有人要我去除0”等等之类的。关于并发的概念,以及并发编程的简单模型,下面做一个归纳:

1. Erlang程序有成百上千个进程组成,这些进程可以互发消息;
2. 进程能否收到和理解这些消息是不确定的。如果你想知道一个消息是否被对方收到和理解,那么必须向这个进程发消息询问并等待回应;
3. 两个进程可以相互链接。如果其中一个进程消亡,那么另外一个进程就会收到一条消息,指明第一个进程消亡的原因。

本节讲述了Erlang并发编程的模型和相关概念,下一节我将讲述Erlang并发编程,通过3个新原语:spawn、send、receive阐述Erlang并发编程。

转载于:https://www.cnblogs.com/itfreer/archive/2012/03/10/2388884.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值