保持长时间运行的 Go 程序存活的最佳实践
运行长时间运行的 Go 程序而不使其提前终止对于某些应用程序。当 main 函数退出时,程序也会退出,从而使任何正在运行的 goroutine 陷入困境。如何确保你的程序在应该的时候保持活动状态?
防止主 goroutine 退出的一种常见策略是使用对 fmt.Scanln() 的简单调用。但是,如果您不打算进行任何控制台交互,则此选项是有问题的。
相反,请考虑以下建议:
永远阻止:
使用 select {} 阻塞主 goroutine 进行无限期等待。这种方法确保只要 select 语句不被中断,程序就保持活动状态。
package main import ( "fmt" "time" ) func main() { go forever() select {} // block forever } func forever() { for { fmt.Printf("%v+\n", time.Now()) time.Sleep(time.Second) } }
以上是如何防止长时间运行的 Go 程序过早终止?的详细内容。更多信息请关注PHP中文网其他相关文章!