在 scala/akka 中的两个参与者之间传递消息时,内存中会发生什么?
what happens underneath in memory during message passing between two actors in scala/akka?
在 scala/akka 中的两个参与者之间传递消息时,内存中发生了什么?假设我有两个演员 Actor1 和 Actor2,Actor1 向 Actor2 发送一个大小为 10000 的数组列表,其中可能包含整数、字符串或对象。
记忆中会发生什么?据我目前所知,"actors don't share memory but they share the state"。那么这是否意味着来自 actor1 的数组列表将被复制到 actor2?但这听起来效率很低,我找不到相关信息来阅读这些内容。任何文档?关于参与者如何交换乒乓消息的例子太多了,这些例子都是多余的。
对于同一个 JVM 上的 actor
akka 消息限制之一是不变性。因此,您可以与不同的邮箱共享对同一消息对象的引用。每个演员都有邮箱——通常是一个队列,其中包含带有消息的信封。每条消息都是对对象的引用。因此,当您发送数组时,只需将引用添加到参与者的邮箱中,如果它是不可变对象,则不会出现共享数据问题。
在 scala/akka 中的两个参与者之间传递消息时,内存中发生了什么?假设我有两个演员 Actor1 和 Actor2,Actor1 向 Actor2 发送一个大小为 10000 的数组列表,其中可能包含整数、字符串或对象。
记忆中会发生什么?据我目前所知,"actors don't share memory but they share the state"。那么这是否意味着来自 actor1 的数组列表将被复制到 actor2?但这听起来效率很低,我找不到相关信息来阅读这些内容。任何文档?关于参与者如何交换乒乓消息的例子太多了,这些例子都是多余的。
对于同一个 JVM 上的 actor
akka 消息限制之一是不变性。因此,您可以与不同的邮箱共享对同一消息对象的引用。每个演员都有邮箱——通常是一个队列,其中包含带有消息的信封。每条消息都是对对象的引用。因此,当您发送数组时,只需将引用添加到参与者的邮箱中,如果它是不可变对象,则不会出现共享数据问题。