Actor模型浅谈
来源:互联网 发布:嘻哈 知乎 编辑:程序博客网 时间:2024/04/29 04:23
简述
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 等,有兴趣的同学可以去了解一下源码
0 0
- Actor模型浅谈
- Actor模型浅谈
- Actor模型浅谈
- Actor模型
- Actor模型
- Actor模型
- Actor模型
- Actor模型
- actor 模型
- Actor模型
- Actor模型
- Actor模型
- Actor模型
- Actor模型
- Actor模型
- 浅谈 akka actor
- Actor模型的本质
- 关于Actor模型
- 数据结构--Chapter2(线性表)
- su,su-,sudo命令
- linux编程中的超时设置
- js中bind、call、apply函数的用法
- MySQL查询性能优化
- Actor模型浅谈
- Eclipse+Genymotion报错:OpenGLRenderer Getting MAX_TEXTURE_SIZE from GradienCache
- php http
- ActivityThread笔记
- 异步:boost async & boost future
- 1052. Linked List Sorting (25)
- Android Tween动画
- 55 Which statement about recovering from the loss of a redo log group is true? A. If the lost redo l
- 安卓获取验证码,并实现倒计时