我需要並行處理多個數據值(「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