2

2 種類のアクターがあるMasterとします。Slave

新しいジョブをスレーブにディスパッチし、スレーブの応答を待って、応答を処理します。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 に答える