我必须每分钟执行一些语句。我不确定我应该遵循以下哪一项。如果有人能解释内存和 CPU 方面的优缺点,那就太好了。
时间.Sleep()
func main() {
go func() {
for {
time.Sleep(time.Minute)
fmt.Println("Hi")
}
}()
time.Sleep(10 * time.Minute) //just to keep main thread running
}
或股票代码
func main() {
go func() {
for _ = range time.Tick(time.Minute) {
fmt.Println("Hi")
}
}()
time.Sleep(10 * time.Minute) //just to keep main thread running
}
来自文档:
NewTicker 返回一个新的 Ticker,其中包含一个通道,该通道将按照持续时间参数指定的周期发送时间。它会调整间隔或删除滴答声以弥补接收速度较慢的情况。持续时间 d 必须大于零;如果没有,NewTicker 就会恐慌。停止股票代码以释放相关资源。
time.Sleep
只需等待提供的时间并继续程序即可。如果代码的其余部分需要更长的时间,则无需进行调整。
代码会考虑所提供块的执行时间,并在必要时跳过一个间隔。
想象一下这样的场景:您提供一分钟的时间间隔,而您的代码需要 10 秒来执行。
在您的第一个版本中,您的程序执行代码 10 秒,然后休眠 60 秒。实际上每 70 秒就会调用一次。
在第二个版本中,代码执行 10 秒,然后代码将等待时间调整为 50 秒。您的代码每分钟都会执行一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)