简述
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
- 大小: 12.6 KB
分享到:
相关推荐
在IT行业中,Actor模型是一种并发计算的模型,它源自于函数式编程领域,由英国计算机科学家C.A.R. Hoare提出。Actor模型的核心思想是将并发处理中的实体——也就是执行单元——抽象为“Actor”,每个Actor都有自己的...
Java Actor模型是一种并发编程模型,源自于Scala语言,但也可以在Java中实现。该模型基于actor的概念,每个actor都是一个独立的执行单元,拥有自己的状态并与其他actor通过异步消息传递进行通信。这种方式极大地简化...
基于Actor模型的高性能分布式XMPP服务器(毕业论文).caj
在并发编程领域,Swift提供了一种名为Actor模型的机制,旨在解决多线程环境中的数据竞争问题,提高程序的并发性能和安全性。而"Aerojet"正是一个针对Swift的Actor模型实现,它为开发者提供了更高级别的抽象来处理...
在IT行业中,Actor模型是一种处理并发和分布式计算的有效方法,尤其在高并发和大规模系统中。这个"ActorBoilerplate"项目提供了一个基础模板,帮助开发者使用actor模型来构建Web应用程序。下面我们将深入探讨actor...
具体来说,基于Actor模型的XMPP服务器架构设计能够将不同的消息处理任务分配给不同的Actor去执行,每个Actor只处理一部分消息,这不仅能够提高并发度,还能在系统规模扩大时,通过增加Actor的数量来提升系统的整体...
主要介绍了JAVA Actor模型的的相关资料,文中讲解非常细致,帮助大家更好的学习JAVA,感兴趣的朋友可以了解下
《Akka Actor模型开发库 v2.6.12 源码解析》 Akka是基于Actor模型的高性能、高并发、分布式计算框架,它由Lightbend公司(前身为Typesafe)开发并维护。Actor模型是一种并发计算模型,通过消息传递实现并发,为...
**Actor模型:并发计算的新视角** Actor模型是一种用于并发计算的理论框架,由Erlang编程语言的创始人Joe Armstrong在1973年由Carl Hewitt首次提出。它提供了一种处理并发和分布式系统中复杂性的方式,通过将计算视...
Akka Actor模型是一种高效、可扩展的并发编程模型,它源于Scala编程语言并被广泛应用于分布式系统中。Akka库的v2.9.1版本提供了丰富的功能和优化,为开发者构建高度并发、容错和反应式的应用程序提供了一个强大的...
CAF是C ++ actor模型的开源实现,具有轻量级和快速的actor实现,消息的模式匹配,网络透明消息传递等。 在线资源 主页: : 开发者博客: : 手册: : Doxygen : : 报告错误/获得帮助 GitHub上的未解决问题: : ...
它非常喜欢“标记事件驱动的体系结构”(SEDA)事件驱动器模型来进行流水线事件处理。 该系统非常适合构建IO密集型,对延迟敏感的应用程序(例如数据库,文件系统等),这些应用程序利用SSD等高吞吐量设备并支持10+...
该软件是为了解决分布式编程中一系列的编程问题而设计,是非常实用的Java和Scala的Actor模型应用,支持多种运行系统进行使用,且安全性高,操作简单,用起来也是非常的方便的! 1、Actor之间完全独立; 2、Actor由...
该项目为基于ECS和Actor模型的Go语言分布式游戏服务端框架设计源码,包含328个文件,涵盖了133个Go源文件、29个JavaScript/TypeScript脚本文件、35个PNG图片资源、16个JSON数据文件、5个日志文件以及其他类型文件。...
1、使用protostuff序列化(.proto文件编写恶心,与Protocol Buffer性能几乎接近) 2、使用Netty进行通讯(同节点RPC不走网络,直接入收件箱队列); 3、路由策略:随机路由、指定Key路由、资源Id路由、强制路由 ...
通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。本书由10章构成,详细介绍了使用Actor模型中响应式消息传输模式的理论和实用技巧。其中包括:Actor模型和...
通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。《响应式架构:消息模式Actor实现与Scala、Akka应用集成》由10章构成,详细介绍了使用Actor模型中的响应式...
在给定的标题和描述中,我们看到这种模式被应用于构建分布式游戏服务端框架,并结合了Actor模型,这为创建轻量、高性能、高可用的分布式游戏后端提供了基础。 1. **ECS(实体组件系统)**: - **实体(Entity)**...
Protoactor是一个强大的分布式系统框架,它采用了Actor模型,这是一种并行计算的范式,源自Erlang和Akka等系统。Actor模型通过将计算任务分散到独立的、自我管理的实体——Actor中,实现了高度的并发和容错性。每个...