Actor模型浅谈

转自:http://janeky.iteye.com/blog/1504125

简述

 

Actor模型在并发编程中是比较常见的一种模型。很多开发语言都提供了原生的Actor模型。例如erlang,scala等


 

 

Actor,可以看作是一个个独立的实体,他们之间是毫无关联的。但是,他们可以通过消息来通信。一个Actor收到其他Actor的信息后,它可以根据需要作出各种相应。消息的类型可以是任意的,消息的内容也可以是任意的。这点有点像webservice了。只提供接口服务,你不必了解我是如何实现的。

 

一个Actor如何处理多个Actor的请求呢?它先建立一个消息队列,每次收到消息后,就放入队列,而它每次也从队列中取出消息体来处理。通常我们都使得这个过程是循环的。让Actor可以时刻处理发送来的消息。

 

以Erlang为例子,介绍一下简单的Actor模型

 

1.首先建立一个Actor,在erlang中,起一个进程(这个是erlang虚拟机进程,跟os进程不同),这个进程就是actor了,可以用来接收和发送各种消息了

 

Pid = spawn(Mod,func,Args) %起一个进程

 

2.处理收到的消息

func()->

    receive

{From,Msg}-> %收到一个消息

%%do something

func();

 

3.要对这个actor发送消息,也非常简单

Pid ! {From,Msg}

 

总结:

Actor模型在并发编程中已经得到广泛应用。Java虽然还提供直接的支持,但是一些开源组织已经提供相关的jar包来模拟实现Actor模型,例如:

ActiveJava 等,有兴趣的同学可以去了解一下源码

 

参考资料:

http://en.wikipedia.org/wiki/Actor_model


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值