Akka中的同步、等待和通知

Synchronized, wait and notify in Akka

我想问你一件事。我有一个 "Rec" 演员和更多 "Sen actors"。第一个有一个必须转发的消息列表,发送者是不断向接收者发送消息的参与者。

像这样:

class Rec (frw: Actor) extends Actor
{
    val myList = Nil;
    def act =
    {
            case "Start" => while(true) {/*Extract the first number and send it to frw*/} //I must use a new actor if I want to keep reading messages
            case i => myList+=i; //Should i use a "synchronize" here (i'm extracting elements with the other actor after all)?
    }
}

class Sen (rcv: Actor) extends Actor
{
    var i=100;
    def act =
    {
            case "Start" => while(i>0) {i+=1; rcv ! i;}
    }
}

我的问题是 Rec 必须一次只转发一条消息,因此它必须将所有消息保存在一个列表中。有没有办法改进 Rec actor?我不喜欢 while(true),但我无法在收到消息时提取第一个数字(消息可能在列表中停留的时间太长)。我应该使用 synchronized/wait/notify 还是 Akka 有更好的选择? 谢谢你,对不起我的英语不好。

根据您的代码,您根本不需要 Rec 演员。如果您直接从 Sen 发送消息到 frw,您将获得相同的结果。

你必须记住,Akka actors 一个接一个地顺序处理消息。因此,您来自 Sen 的所有消息都会一次到达 frw,即使您直接从 Sen[= 发送它们也是如此21=] 到 frw.