あるアクターからランダムに選択された別のアクターにメッセージ ("msg" など) を転送しようとしています。
ランダムに選択されたアクターが以前のアクターの 1 つである場合を除き、完全に正常に機能します。そのようなシナリオが発生すると、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