gpt4 book ai didi

scala - 如何在不干扰正常终止行为的情况下将 Scala Actor 添加到现有程序?

转载 作者:行者123 更新时间:2023-12-04 13:55:36 27 4
gpt4 key购买 nike

该程序在执行 main() 后不退出。

object Main
{
def main(args: Array[String]) {
... // existing code
f()
... // existing code
}
def f() {
import scala.actors.Actor._
val a = actor {
loop {
react {
case msg: String => System.out.println(msg)
}
}
}
a ! "hello world"
}
}

由于这种意想不到的副作用,使用 actor 可能被视为侵入性的。

假设 actor 必须继续运行直到程序终止,您将如何在所有终止情况下保持原始行为?

最佳答案

在 2.8 中有一个 DaemonActor 类允许这样做。在 2.7.x I 中,您可以入侵自定义调度程序,即使仍有现场 Actor 也不会阻止关闭,或者如果您想要一种简单的方法,您可以在 main 的末尾调用 System.exit()。

如果您将 actor 视为一种轻量级线程,那么很多时候您都希望有一个 live actor 来防止程序终止。否则,如果您有一个程序在actor 中完成所有工作,则您需要在主线程上放置一些东西,以使其保持事件状态直到所有actor 完成。

关于scala - 如何在不干扰正常终止行为的情况下将 Scala Actor 添加到现有程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2305740/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com