【问题标题】:How to make full use of all cores using Scala actors?如何使用 Scala 演员充分利用所有核心?
【发布时间】:2010-08-21 03:25:27
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 我点击了复选标记,是吗?

标签: scala actor


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多