我是新手,尝试让两种方法在应用程序运行时定期同时运行。我已经设法想出以下内容,但该for true部分感觉不正确,因为这是阻塞的。
渠道是实现这一目标的更好方法吗?任何指向正确方向的指针都会有所帮助。
func main() {
t1 := schedule(ping, time.Second)
t2 := schedule(ping, 2*time.Second)
for true {
time.Sleep(1 * time.Second)
}
t1.Stop()
t2.Stop()
}
func schedule(f func(interval time.Duration), interval time.Duration) *time.Ticker {
ticker := time.NewTicker(interval)
go func() {
for range ticker.C {
f(interval)
}
}()
return ticker
}
func ping(interval time.Duration) {
log.Println("ping ", interval)
}
Run Code Online (Sandbox Code Playgroud)
为了防止应用程序退出,主 goroutine 必须阻塞。
用于select {}阻塞主 goroutine。
由于代码在应用程序的持续时间内运行,因此无需停止代码。
func main() {
schedule(ping, time.Second)
schedule(ping, 2*time.Second)
select {}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |