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
}
}
}