我有一个高CPU /内存绑定任务,我希望我的Scala程序并行执行。所以,我正在使用Actors框架(在while(true)循环中使用receive)。我在actor上调用start方法并向其发送数千条消息进行处理。
在执行程序期间(大约需要一个小时),只使用了100 - 120%的CPU。这台机器有8个核心。演员不应该产生多个线程来耗尽所有8个核心,我应该看到使用率接近800%?
或者我是否应该实例化8个actor并将其中的每个消息发送给它(或者更确切地说是从一些并发队列中读取它们)?
感谢。
答案 0 :(得分:6)
不。保证单个actor一次只在一个线程上执行,因此不需要同步对其状态的访问。如果您想将问题分散到多个核心,则需要多个参与者。