【发布时间】:2012-03-30 11:51:32
【问题描述】:
我需要将一系列远程调用切成块。我想过使用演员。
我想到了这样的事情:
class ControlActor() extends Actor{
var counter = 1000
def act{
for (i <- 1 until 1000) { new RequestActor(this) start }
while(true){
receive{
case "Stop" =>{counter = counter-1; if(counter==0){return}}
}
}
}
}
class RequestActor(parent:ControlActor) extends actor{ ... }
但这有一个明显的问题:当我进入接收块时,一些 RequestActor 实例可能已经完成执行。如果他们向尚未处于消息接收状态的参与者发送消息会发生什么?消息是排队还是被丢弃?
最重要的是:我如何创建能够通知创建它们的 Actor 的子 Actor,即使它们返回得非常快?
还相关:将当前的 Actor 实例 (this) 传递给其他 Actor 是一种好习惯吗?由于某种原因,我没有看到有人这样做。
【问题讨论】:
-
当我告诉每个使用 Scala actor 的问题时,请查看 Akka。它的真棒浓度非常高。