2

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

我将新的工作分配给奴隶,等待他们的回应并处理回应。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 开始,所以答案可能很简单:)

4

1 回答 1

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

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

于 2012-07-30T16:42:12.917 回答