2012-09-29 3 views
0

한 액터의 메시지 (예 : "msg")를 무작위로 선택한 다른 액터로 전달하려고합니다.스칼라 액터 간의 메시지 반복

임의로 선택된 액터가 이전 액터 중 하나가 아니면 완벽하게 작동합니다. 그런 시나리오가 발생할 때 Scala는 무기한 대기합니다. 내가 (즉, 무한 배우 사이의 메시지 루프)이 후

Actor A ---- msg ---> Actor B 
Actor B ---- msg ---> Actor C 
Actor C ---- msg ---> Actor A 

이미 수신 프로그램에 관계없이 그것의 메시지를 전달하려면, 프로그램이 종료되지 않습니다 않으며 메시지를 전달 계속 않습니다. 내가 틀린 점을 지적 할 수 있습니까?

class MyActor extends Actor { 
def act() { 
react{ 
case str : String => 
// Picking a random actor 
val randNo : Int = Random.nextInt(5) 
actorArray(randNo) ! str 
} 
} 
} 

감사합니다, MS

+0

액터 (특히 스칼라의 컨텍스트)에 관심이 있으시면 스칼라 2.10에서 스칼라 액터를 대체하는 Akka Actors (http://akka.io/)를 확인하시기 바랍니다. – adelbertc

답변

4

당신은 배우가 한 번 이상 반응 수 있도록 당신의 react 호출 주위에 루프를 넣을 필요가있다.

class MyActor extends Actor { 
    def act() { 
    loop { 
     react { 
     // ... 
     } 
    } 
    } 
} 

이 부분은 short tutorial on Scala actors을 참조하십시오.