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
}
}
}

谢谢,女士

4

1 回答 1

4

你需要在你的react调用周围放置一个循环,让演员做出不止一次的反应。

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

请参阅有关 Scala 演员的简短教程

于 2012-09-29T21:24:21.417 回答