2012-07-30 51 views
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和演員,所以答案可能是微不足道的:)

+0

我認爲這個問題的答案可以幫助你:http://stackoverflow.com/questions/2564840/simple-scala-actor-question – user573215 2012-11-22 20:32:08

回答

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

當然,如果你等待幾個奴隸,你需要計算減少未完成的奴隸的數量,以確定何時完成主要演員。