我需要并行处理多个数据值(“SIMD”)。我可以使用java.util.concurrent
的API(Executors.newFixedThreadPool()
)使用Future
实例来处理在平行几个值:多个斯卡拉参与者服务于一项任务
import java.util.concurrent.{Executors, Callable}
class ExecutorsTest {
private class Process(value: Int)
extends Callable[Int] {
def call(): Int = {
// Do some time-consuming task
value
}
}
val executorService = {
val threads = Runtime.getRuntime.availableProcessors
Executors.newFixedThreadPool(threads)
}
val processes = for (process <- 1 to 1000) yield new Process(process)
val futures = executorService.invokeAll(processes)
// Wait for futures
}
我该怎么做演员使用同样的事情?我不相信我想把所有的流程“喂”给一个演员,因为演员会按顺序执行它们。
我是否需要创建多个“处理器”参与者,并使用“调度员”参与者向每个“处理器”参与者发送相同数量的进程?
我还在读“斯卡拉的演员”一书,并使用演员制作了一个玩具项目:http://www.scala-notes.org/2011/03/mandelactors/ – Jesper 2011-03-24 12:25:46
@Jesper:我将添加您的博客到我的Instapaper队列稍后阅读。 – Ralph 2011-03-24 12:26:58