我如何加入已开始的演员?

时间:2012-11-08 08:54:15

标签: scala

启动演员后

val a = actor {
  loop {
    react {
      case "end" => exit
      ...
    }
  }
}

向其发送“结束”消息

a ! "end"

我想确保线程已完成。 怎么加入?

2 个答案:

答案 0 :(得分:2)

据我所知,演员不能像Java那样明确地加入。这个概念是引入基于事件的编程,因此它应该只对事件做出反应。 然而,您可以捕获出口,并通过link将您的初始演员(A)链接到结束演员(B)。这样,初始演员A在B结束时接收事件。如果你没有得到任何事件,你知道演员没有被终止。请参阅此处的主题:https://stackoverflow.com/a/4304602/999865

如果您不关心资源并且知道该线程将终止,您也可以让该actor继承自DaemonActor。守护进程actor不会阻止任何系统资源。

答案 1 :(得分:2)

在我看来,做你想做的事情的“演员方式”实际上让你的演员回复了一条消息“完成”给请求者,所以它可以采取行动。这样,它仍然是异步事件处理