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

问题描述:

我有一个高CPU /内存绑定的任务,我希望我的Scala程序并行执行。所以,我正在使用Actors框架(使用receive(while(true)循环)。我在actor上调用start方法并发送数千条消息来处理。如何充分利用所有使用Scala actor的核心?

在程序执行过程中(大约需要一个小时),只有100 - 120%的CPU被使用。该机器有8个内核。该演员是否应该派生出多个线程来使用所有8个内核,并且我应该看到使用率接近800%?

或者我应该实例化8个角色并发送每个消息的一部分(或者让他们全部从某个并发队列中读取)?

谢谢。

+0

我点了勾号,是吗? – Jija 2010-08-21 04:16:06

没有。一个参与者保证一次只能在一个线程上执行,所以访问其状态不需要同步。如果您想要将问题分散到多个核心中,则需要多个参与者。