问题标签 [actor-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2058 浏览

programming-languages - 什么是编程语言上下文中的演员模型?

我已经在 Erlang 演员模型、Groovy 演员、Scala 演员模型等上下文中的多个地方看到过它。这是指什么?

0 投票
1 回答
1130 浏览

theory - Actor 模型对共享状态的优势

我正在阅读有关 Actor 模型的演示文稿,每个人都声称它优于共享状态并行编程,因为它避免了许多陷阱,如死锁和竞争条件。我在问自己这种说法的具体内容是什么。如果它避免了这些问题,它是如何做到的?

0 投票
4 回答
11244 浏览

multithreading - 什么时候应该使用 Actor 模型?

什么时候应该使用Actor 模型

它当然不能保证无死锁的环境。

演员 A 可以等待 B 的消息,而 B 等待 A。

此外,如果参与者必须确保其消息在继续执行下一个任务之前已得到处理,则它必须发送消息并等待“您的消息已处理”消息,而不是直接阻塞。

模型的力量是什么?

0 投票
5 回答
526 浏览

actor - 你会如何向非程序员解释演员?

好吧,标题差不多就是这样:如果我坐在你面前让一个非技术人员/我妈妈/12 岁男孩/可卡犬坐在你面前,让你向他们解释演员,你会从哪里开始?我问是因为我的硕士项目在很大程度上涉及到他们,每隔一天就会有人要求我告诉他们我在做什么。当我在我的课程中与其他人交谈时,情况还不错——通常这个概念是陌生的,但可以理解——但最近我的室友,一名化学家,让我向她解释,并说我很挣扎会是一个非常巨大的轻描淡写。

我正在寻找某种能够传达这个想法的解释,而不是技术基础。它可以是一个隐喻,它不必很精确——我只是想让他们明白我在用他们做什么。有任何想法吗?

0 投票
2 回答
1998 浏览

java - JVM 上的零拷贝消息传递

Actor 消息传递语义的忠实实现意味着消息内容是从逻辑角度深度复制的,即使对于不可变类型也是如此。消息内容的深度复制仍然是 Actor 模型幼稚实现的最大瓶颈之一,因此一些实现(即 Kilim)支持零复制消息传递。

我的问题是,如何在 JVM 等共享内存平台中实现零拷贝消息传递(作为Actor 库/框架的一部分)?我认为它只能用于具有不可变内容的消息,并且必须以某种方式限制消息引用的可见性。但是,我很难找到 Actor 模型实现背后的“理论”。

0 投票
2 回答
1587 浏览

performance - Actor 模型中消息传递的性能

我已经看到根据他们的演员完成的演员模型实现的基准。例如,Akka Actor 非常轻量级(每个 Actor 600 字节),可以创建数百万个。但是,我从未见过关于消息传递吞吐量的基准测试。

例如,给定一些参与者,每秒可以在他们之间传递多少条消息?

有没有人可以链接到这样的性能基准(就消息传递吞吐量而言)?

0 投票
1 回答
241 浏览

scala - Scala actor:调度多线程应用程序的两种不同方法

我是 Scala Actors 的新手。我计划构建的是一个应用程序,它有几个墨盒,每个墨盒都执行特定的 http 调用并定期检索+保留一些信息。稳健性是最重要的。到目前为止,这些是我想到的方法:

  1. 围绕 TimerTask 构建应用程序,从 Actor 扩展墨盒并.act定期调用它们的 s (或者我应该向它们发送消息吗?有什么区别?)
  2. 从 Actor 扩展并使用 Timeouts 定期运行它们。

有人可以阐明这些差异吗?

0 投票
2 回答
1271 浏览

erlang - 演员模型和碰撞检测

我只是在考虑将Erlang用于游戏服务器的可能性。(哦,我不是 Erlang 专家,只是考虑舞台)这意味着使用Actor Model进行游戏模拟。当然,最大的吸引力在于它的并发分布在多个节点上。

我目前的大问题是我应该如何执行多角色交互,如碰撞检测。(这只是一个例子)

尽管任何游戏都需要碰撞检测,但从 Actor 模型的本质来看,它看起来效率不高,甚至没有意义,因为它需要全局同步的状态查询和所有目标 Actor 的更新。如果我使用任何同步,它会覆盖 Erlang 演员模型的所有好处。

当然,如果我正确使用空间分区,一次定位演员可能会更小,但这只是一种优化,而不是主要答案。或者这是这个问题的正确答案?通过减少交互参与者的数量来减少同步范围?

0 投票
2 回答
191 浏览

scala - Scala 演员不一致地自杀

我是 scala 的新手,我正在编写 scala 代码来实现糕点协议。协议本身并不重要。有节点,每个节点都有一个我要填充的路由表。这是代码的一部分:

问题是当对 getMatchingNode 的函数调用发生时,演员自己突然死亡。'list' 是所有节点的列表。(节点对象列表)此外,这种行为并不一致。每个参与者(对于 10 个节点)应该调用 getMatchingNode 15 次。但是在调试时,演员在一次调用后或有时在 3-4 次调用后会在 getMatchingNode 函数调用中杀死自己。被执行的 scala 库代码是这样的:

Eclipse 显示此代码已从 getMatchingNode 函数中的 for 循环调用

奇怪的是,有时循环表现正常,有时它会进入杀死演员的scala代码。

任何输入代码有什么问题?

任何帮助,将不胜感激。

0 投票
1 回答
294 浏览

scala - 意外更改 Scala Actor 的局部变量

我目前正在研究一种与 Scala 一起使用的日志记录机制,但我遇到了一个意外问题,阻止了我实际研究它。为了测试功能,我希望设置一个简单的消息传递环。在环内,每个节点都是 Scala Actor 的扩展,并且知道它的直接邻居(上一个/下一个)。

环构造如下完成,参数“nodes”从控制器参与者传递:

这似乎可以按我的意愿运行,每个节点都接收到正确的邻居对。在节点类中有一个大小为 2 的数组,设置如下:

一切都很好,但是,当我引入要在环周围传递的消息时(从节点 0 开始),我发现每个节点现在在它的 ringNeighbors 数组中都有相同的值。这些值与 ringBuilder(即节点 8 的邻居)函数中循环的最终迭代一致。没有发生额外的消息传递,所以我不明白这些值是如何为节点数组中的每个实例修改的,因此是环。

我仍在学习 Scala 的基本知识,希望我没有错误地忽略一些简单的事情。