【问题标题】:Possible scenarios for go routine termination [closed]goroutine终止的可能场景[关闭]
【发布时间】:2018-04-24 10:43:12
【问题描述】:

在哪些情况下可能会终止必须永远运行的go routine?

【问题讨论】:

  • 恐慌或明确返回。很简单。
  • 所以,我不会有任何回报。
  • Go 中通常不使用线程。首选方式是使用 goroutine 和通道。
  • 已更正。错误地写了线程。

标签: go goroutine


【解决方案1】:

如果它处于非终止 for 循环中,它只会在紧急情况下退出,或者如果操作系统终止进程(程序)或机器停机。

【讨论】:

  • 哪些情况会导致恐慌?如果机器宕机了,没关系,然后进程也会重新启动。
  • 我只知道内存不足的情况。
  • 运行时错误,例如越界数组访问或您正在使用的代码或包直接调用 panic()。
【解决方案2】:

来自documentation,

执行错误(例如尝试越界索引数组)触发运行时恐慌,相当于调用内置函数恐慌,其值为实现定义的接口类型 runtime.Error。

除此之外,内存不足时可以panic。

如果go routine 遇到panic,则可以使用defer-panic-recover 来处理它。 This官方文档的链接提供了更多关于它的使用信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多