【发布时间】:2018-04-24 10:43:12
【问题描述】:
在哪些情况下可能会终止必须永远运行的go routine?
【问题讨论】:
-
恐慌或明确返回。很简单。
-
所以,我不会有任何回报。
-
Go 中通常不使用线程。首选方式是使用 goroutine 和通道。
-
已更正。错误地写了线程。
在哪些情况下可能会终止必须永远运行的go routine?
【问题讨论】:
如果它处于非终止 for 循环中,它只会在紧急情况下退出,或者如果操作系统终止进程(程序)或机器停机。
【讨论】:
执行错误(例如尝试越界索引数组)触发运行时恐慌,相当于调用内置函数恐慌,其值为实现定义的接口类型 runtime.Error。
除此之外,内存不足时可以panic。
如果go routine 遇到panic,则可以使用defer-panic-recover 来处理它。 This官方文档的链接提供了更多关于它的使用信息。
【讨论】: