问题标签 [actor]
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.
scala - Scala 2.8Beta1 演员
呼唤!!即使在调用者收到回复后(即:未来已准备好),从一个演员到另一名工作演员的方法似乎也保持通道打开。
例如,使用 !! 将 11 条不同的消息从一个 actor 发送到另一个 worker actor 将导致 11 条类似于下面的消息显示在原始调用者的邮箱中,每个具有不同的 Channel@xxxx 值。
!(scala.actors.Channel@11b456f,Exit(com.test.app.actor.QueryActor@4f7bc2,'normal))
这些消息是否在等待工作人员的回复,因为原始调用者是在它自己调用 exit() 时发送退出消息,或者它们是在另一端生成的,并且由于某种原因有上面显示的打印表单?至此,worker actor 已经退出,所以 !! 的原始调用者 绝对不会收到任何回复。
这种行为是不可取的,因为原始调用参与者的邮箱充满了这些退出消息(每次使用 !! 时创建的每个通道都有一个)。
这怎么能阻止?原始呼叫者是否自动“链接”到每个创建的回复频道!称呼?
scala - scala中的“死锁”
我想在 scala 中重写 Sun 的关于 Java 并发的教程中的示例。原始代码在这里:http: //java.sun.com/docs/books/tutorial/essential/concurrency/deadlock.html
此代码不正确。它冻结在评论指示的位置。有人可以纠正这个吗?提前致谢。
scala - 作曲演员
我已经实现了可以添加到 Actors 的 Listenable/Listener trait。我想知道是否可以将这种风格的特征附加到演员而不必显式调用listenerHandler方法?
我也期待在 Akka 库中找到这个功能。我是否遗漏了某些东西,或者 Akka 是否有某些原因不包含此内容?
scala - Scala:为什么 Actor 是轻量级的?
是什么让演员如此轻盈?
我什至不确定它们是如何工作的。它们不是分开的线程吗?
scala - scala actor 中的操作之间的依赖关系
我正在尝试使用 scala 演员并行化代码。那是我第一次使用演员的真正代码,但我对 C 中的 Java 多线程和 MPI 有一些经验。但是我完全迷路了。
我想实现的工作流是一个循环管道,可以描述如下:
- 每个工人演员都有对另一个人的引用,从而形成一个圆圈
- 有一个协调演员可以通过发送
StartWork()
消息来触发计算 - 当一个工人收到一条
StartWork()
消息时,它会在本地处理一些东西并将DoWork(...)
消息发送给它在圈子中的邻居。 - 邻居做一些其他的事情,然后向
DoWork(...)
自己的邻居发送消息。 - 这种情况一直持续到初始工作人员收到
DoWork()
消息为止。 - 协调者可以向初始工作人员发送
GetResult()
消息并等待回复。
关键是协调器应该只在数据准备好时接收结果。工人如何在回复GetResult()
消息之前等待工作返回给它?
为了加快计算速度,任何工作人员都可以随时收到一个StartWork()
。
这是我第一次尝试对工作人员进行伪实现:
在协调器方面:
scala - 如何使用参与者重写具有共享依赖项的 for 循环
我们有一些代码需要运行得更快。它已经分析过了,所以我们想使用多个线程。通常我会设置一个内存队列,并让许多线程处理队列的工作并计算结果。对于共享数据,我会使用 ConcurrentHashMap 或类似的。
我真的不想再走那条路了。从我所阅读的内容来看,使用演员将产生更清晰的代码,如果我使用 akka 迁移到 1 个以上的 jvm 应该会更容易。真的吗?
但是,我不知道如何在演员中思考,所以我不知道从哪里开始。
为了更好地了解问题,这里有一些示例代码:
如果有使用演员经验的人可以建议如何将其映射到演员,我将不胜感激。
sockets - 每个套接字连接使用一个actor的Scala方式
我想知道如何避免一个套接字连接pr。Scala 中的线程。我想了很多,但我总是得到一些代码来监听每个客户端连接的传入数据。
问题是我想开发一个应该同时处理几千个连接的应用程序。但是,由于缺乏可伸缩性和上下文切换,我当然不想为每个连接创建一个线程。
什么是“正确”的方法来做到这一点。在我的世界中,应该可以为每个连接设置一个参与者,而无需为每个参与者阻塞一个线程。
multithreading - Scala Actors 与 Java 与底层 COM 库的互操作
我正在开发一个使用 ESRI 组件(基于 COM,用 JIntegra 包装)的 JVM 项目。客户端已请求我们在 JVM 上生成的 JAR 文件,并且可以访问 Java 代码。我想使用 Scala,但我担心图书馆与 Scala 的演员合作的效果如何。特别是我担心 COM 和 Java 用于将对象从一个线程传递到另一个线程的不同机制。
有人对这个有经验么?他们会打得好吗?
编辑:澄清
我注意到在 ESRI DB 上执行 I/O 时,CPU 利用率大约为 15%。我想阅读每一行并将该行传递给另一个演员进行解析。然后我可以一次从数据库中读取多个线程。问题是使用 ESRI 的库检索到的每一行实际上都是一个 Java 包装的 COM 对象。