scala - 如何使用Scala actor充分利用所有核心?

标签 scala actor

我有一个高 CPU/内存限制的任务,我希望我的 Scala 程序能够并行执行。因此,我正在使用 Actors 框架(在 while(true) 循环中使用 receive)。我调用 actor 上的 start 方法并向其发送数千条消息进行处理。

在程序执行期间(大约需要一个小时),仅使用 100 - 120% 的 CPU。该机器有8个核心。 Actor 不应该生成多个线程来使用所有 8 个核心吗?我应该看到使用率接近 800%?

或者我应该实例化 8 个参与者并向其发送一些消息(或者更确切地说让它们全部从某个并发队列中读取)?

谢谢。

最佳答案

不。保证单个参与者一次只在一个线程上执行,因此不需要同步对其状态的访问。如果您想将问题分散到多个核心,则需要多个参与者。

关于scala - 如何使用Scala actor充分利用所有核心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536158/

相关文章:

带通配符的 Scala 过滤器?

json - 使用 Lift-json 使用 Map[String,Any] 属性反序列化案例类

scala - VSCode 金属,在 Scalatest 中运行特定十

c# - 如何在 F# 代码中使用 Microsoft Coyote - 父类型中 protected 嵌套属性类型

multithreading - 让 Actor sleep

eclipse - 显示 Scala 表达式的推断类型

scala - 游戏中的 Redis 发布订阅

java - Akka 中的单元测试持久性参与者

java - 在 Guice 初始化中使用先前注入(inject)的绑定(bind)

scala - Scala 中的并行递归记忆化