我正试图将一条消息(比如“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 :(得分:4)
你需要围绕你的react
电话进行循环,让演员不止一次做出反应。
class MyActor extends Actor {
def act() {
loop {
react {
// ...
}
}
}
}