美文网首页
[ 2019-05-27 ] Actor 和消息传递

[ 2019-05-27 ] Actor 和消息传递

作者: 香山上的麻雀 | 来源:发表于2020-03-12 14:52 被阅读0次
  • Actor 和消息传递
    在面向对象编程语言中,对象的特点之一就是能够被直接调用:一个对象可以访问或修改另一个对象的属性,也可以直接调用另一个对象的方法。
    这在只有一个线程进行这些操作时是没有问题的,但是如果多个线程同时读取并修改同一个值,那么可能就需要进行同步并加锁。

Actor 和对象的不同之处在于其不能被直接读取、修改或是调用。反之, Actor 只能通过消息传递的方式与外界进行通信。

简单来说, 消息传递指的是一个 Actor 可以接收消息(消息可以是一个对象), 可以发送消息, 也可以对接收到的消息作出回复。

尽管我们可以将这种方式与向某个方法传递参数并接收返回值进行类比,但是消息传递与方法调用在本质上是不同的:

消息传递是异步的。无论是处理消息还是回复消息,Actor 对外界都没有依赖。
Actor 每次只同步处理一个消息。邮箱本质上是等待 Actor 处理的一个工作队列,如

处理一个消息时,为了能够做出响应,Actor 可以修改内部状态,创建更多 Actor 或是将消息发送给其他 Actor。

几个重要的概念

  • Actor
    一个表示工作节点的并发原语,同步处理接收到的消息。Actor 可以保存并修改内部状态。
  • 消息
    用于跨进程(比如多个 Actor 之间)通信的数据。
  • 消息传递
    一种软件开发范式, 通过传递消息来触发各种行为, 而不是直接触发行为。
  • 邮箱地址
    消息传递的目标地址,当 Actor 空闲时会从该地址获取消息进行处理。
  • 邮箱

在 Actor 处理消息前具体存储消息的地方。可以将其看作是一个消息队列。

Actor 系统

多个 Actor 的集合以及这些 Actor 的邮箱地址、邮箱和配置等。

相关文章

  • [ 2019-05-27 ] Actor 和消息传递

    Actor 和消息传递在面向对象编程语言中,对象的特点之一就是能够被直接调用:一个对象可以访问或修改另一个对象的属...

  • Scala的Actor模型

    Actor Model ActorModel是消息传递模型,基本特征就是消息传递 消息发送是异步的,非阻塞的 消息...

  • Erlang极简学习笔记<09>——进程篇

    Erlang的并发是基于消息传递和Actor模型的 在Erlang中,并发(Concurrncy)指的是有许多独立...

  • Akka Stream之集成

    与Actor集成 为了将流的元素作为消息传递给一个普通的actor,你可以在mapAsync里使用ask或者使用S...

  • [8] - Actor 与并发

    Actor 是 Scala 基于消息传递的并发模型,虽然自 Scala-2.10 其默认并发模型的地位已被 Akk...

  • skynet原理解析

    一、消息队列 上图摘自Actor模型解析,每个Actor都有一个专用的MailBox来接收消息,这也是Actor实...

  • Actor模型合CSP模型

    Actor模型 在Actor模型中,主角是Actor,类似一种Worker。Actor彼此之间直接发送消息,不需要...

  • 基于消息传递的并发模型:Actor和CSP的区别

    An object oriented language is a language with good suppo...

  • Akka Routing

    A Router Actor 有时, 需要把相同类型的消息发给一个 actor 集合, 以便消息可以并行处理 - ...

  • 消息传递和消息转发

    当调用一个方法 run 之后 oc方法会转变为objc_msgSend(id theReceiver, SEL s...

网友评论

      本文标题:[ 2019-05-27 ] Actor 和消息传递

      本文链接:https://www.haomeiwen.com/subject/zuhktctx.html