【问题标题】:what happens underneath in memory during message passing between two actors in scala/akka?在 scala/akka 中的两个参与者之间传递消息期间,内存下面会发生什么?
【发布时间】:2015-11-02 05:23:42
【问题描述】:

在 scala/akka 中的两个参与者之间传递消息时,内存下面会发生什么?假设我有两个演员 Actor1 和 Actor2 并且 Actor1 向 Actor2 发送一个大小为 10000 的数组列表,其中可能包含整数、字符串或对象。

内存中会发生什么?到目前为止,我听到的是“演员不共享记忆,但他们共享状态”。那么这是否意味着来自actor1的数组列表将被复制到actor2?但这听起来效率很低,我找不到有关这些东西的信息。任何文档?关于演员如何交换乒乓消息的例子太多了,这些例子是多余的。

【问题讨论】:

    标签: scala akka actor message-passing


    【解决方案1】:

    对于同一 JVM 上的参与者

    akka 消息限制之一是不可变性。因此,您可以使用不同的邮箱共享对同一消息对象的引用。每个参与者都有邮箱——通常是一个包含带有消息的信封的队列。每条消息都是对对象的引用。因此,当您发送数组时,只需将引用添加到参与者的邮箱中,如果它是不可变对象,则不会出现共享数据问题。

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2015-08-05
      • 2017-04-18
      • 1970-01-01
      • 2018-12-10
      相关资源
      最近更新 更多