二、Golang定時器的停止
1、Timer
func Timer() {
duration := time.Second
timer := time.NewTimer(duration)
cnt := 0
for range timer.C {
fmt.Println(time.Now())
timer.Reset(duration)
cnt++
if cnt == 5 {
timer.Stop()
break
}
}
}
2、Tick
Tick實際上是對底層Ticker的封裝,由于它直接返回的是<-chan Time類型,并沒有像Timer或Ticker一樣提供一個Stop函數來停止計時器,也由于chan是一個只有接收類型,因此也不能通過close直接關閉,因此這里是有可能產生內存泄漏現象
func Timer() {
duration := time.Second
cnt := 0
for next := range time.Tick(duration) {
fmt.Println(next)
cnt++
if cnt == 5 {
break
}
}
}
3、Ticker
func Timer() {
duration := time.Second
ticker := time.NewTicker(duration)
cnt := 0
for next := range ticker.C {
fmt.Println(next)
cnt++
if cnt == 5 {
ticker.Stop()
break
}
}
}