【问题标题】:How can I join started Actor?我怎样才能加入开始的演员?
【发布时间】:2012-11-08 08:54:14
【问题描述】:

开始演员后

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

并向其发送“结束”消息

a ! "end"

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

【问题讨论】:

标签: scala


【解决方案1】:

据我所知,演员不能像 Java 方式那样显式加入。这个概念是为了引入基于事件的编程,所以它应该只对事件做出反应。 但是,您可以设置出口并通过link 将您的初始演员 (A) 链接到结束演员 (B)。这样,当 B 结束时,初始参与者 A 会收到一个事件。如果你没有收到任何事件,你就知道演员没有终止。请参阅此处的主题:https://stackoverflow.com/a/4304602/999865

如果你不关心资源并且知道线程会终止,你也可以让actor从DaemonActor继承。守护进程参与者不会阻塞任何系统资源。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 2018-07-15
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多