【发布时间】:2015-09-12 12:32:48
【问题描述】:
我对 scala 和 akka 很陌生。一旦其中一名演员完成工作,我想知道是否要终止所有其他演员。
代码的基本结构如下。有一个 Master 负责 5 个工人,这些工人是由 RoundRobinPool 生成的。每个工人都在做一些工作,并将结果发送回 Master。我需要意识到的是,一旦其中一个工作人员完成工作,让 Master 终止所有其他工作人员并将其发送回 Master。然后 master 会向 main 函数发送一些相对值,然后整个程序终止。
知道如何实现吗?
//Code:
object X{
sealed trait Message
case class Result() extends Message
case class Work() extends Message
case class Result() extends Message
case class Totalresult() extends Message
class Worker extends Actor{
def receive={
case Work =>
sender ! Result}
}//End of class Worker
class Master(nrOfWorkers: Int) extends Actor{
val workerRouter =context.actorOf(RoundRobinPool(nrOfWorkers).props(Props[Worker])))
def receive={
case Calculate => calculateSender=sender
case Result => calculateSender ! Totoalresult()
}
}//End of class Master
def main(args: String) {
val system =ActorSystem("mysystem")
val master=system.actorOf(Props(new Master(5),name="master")
val future=master ? Calculate
}
}
【问题讨论】: