我有一个可以分发的密集任务,但其最终结果需要累积并传递给另一个方法。
具体而言,假设我正在对大量文本文件中的单个文件进行字数统计。
到目前为止,我制定的版本如下所示:
import scala.actors.Actor
import scala.actors.Actor._
import scala.collection.mutable.{ArrayBuffer => mArray}
case object Stop
class Collector(val bin: mArray[(String, Int)], tcount: Int) extends Actor {
def act() {
loop {
receive {
case (fn: String, val: Int) => {
// the following "bin" object is what I ultimately need to get back
bin.append((fn, val))
}
case Stop => {
tcount -= 1
if(tcount == 0) exit()
}}}}}
class Processor(col: Collector, flist: Seq[File]) extends Actor {
def act() {
for(fn <- flist) {
val wcount = count words in fn // just a place holder for word counting code
col ! (fn, wcount)
}
col ! (id, Stop)
}
}
我可以想到几个自制的方法,让 main 方法等待收集器完成,然后处理“bin”对象。
但是什么是正确的 scala 方法来检索上面的“bin”并将其交还给 main 或者你有什么?