是否可以使用 Ticker 实现长时间运行的守护进程的优雅终止?我在这里阅读了另一个相关线程,您应该始终关闭通道以避免内存泄漏,但是如果我在守护程序模式下运行它(假设我使用daemonize来处理 golang 之外的守护程序操作),真的没有办法让它在进程终止之前进行任何集体清理。除非我遗漏了什么,否则我在这里询问是否有替代/更好的方法在 Golang 中执行此操作
func main() {
ticker := time.NewTicker(Interval)
workers := make(chan bool, 1)
for t := range ticker.C {
select {
case <- ticker.C:
log.Println("Scheduled task is triggered.", t)
go runWorker(workers)
case <- workers:
log.Println("Scheduled task is completed.")
// can't return, it needs to be continue running
}
}
}