斯卡拉:完成演员的循环

时间:2012-07-30 16:26:51

标签: scala

假设我有两种类型的演员:MasterSlave

我向Slaves派遣新职位,等待他们的回复并处理回复。一旦所有奴隶完成,我应该如何完成Master循环?

例如:

class Slave extends Actor {                                                  
  def act() {                                                                
    loop { react {                                                           
      ...                                                                    
      sender ! FinishedAll // send mesage to the master                      
      ...                                                                    
    } }                                                                      
  }                                                                          
}                                                                            

class Master extends Actor {                                                 
  loop { react {                                                           
    ...                                                                        
    case FinishedAll => exit // grrr!
    ...                                                                        
}                                                                            

我从Scala和Actors开始,所以答案可能很简单:)

1 个答案:

答案 0 :(得分:5)

class Master extends Actor {
  def act() {
    var finished = false
    loopWhile( !finished ) { react {
      ...
      case FinishedAll => finished = true
      ...
    }}
  }
}

当然,如果你等待几个奴隶,你需要倒数未完成的奴隶的数量,以确定何时完成主要演员。