Time包详解二-timer和ticket.html
timer 计时器
用于在指定的Duration类型时间后调用函数或计算表达式。
- 如果只是想指定时间之后执行,使用time.Sleep()
- 使用NewTimer(),可以返回的Timer类型在计时器到期之前,取消该计时器
- 直到使用<-timer.C发送一个值,该计时器才会过期
timer1 := time.NewTimer(time.Second * 2)
ticker 断续器
按照指定的周期来调用函数或计算表达式。
- 通常会使用go新开一个线程,否则会
使用时间控制停止ticker
ticker := time.NewTicker(time.Millisecond * 500)
go func() {
for t := range ticker.C {
fmt.Println("Tick at", t)
}
}()
time.Sleep(time.Millisecond * 1500) //阻塞
ticker.Stop()
fmt.Println("Ticker stopped")
使用channel控制停止ticker
ticker := time.NewTicker(time.Millisecond * 500)
c := make(chan int)
go func() {
i := 0
for t := range ticker.C {
fmt.Println("Tick at", t)
i++
if i == 3 {
ticker.Stop()
break
}
}
c
不开新线程..
func main() {
ticker := time.NewTicker(time.Millisecond * 500)
i := 0
for t := range ticker.C { //无限循环,直到break
fmt.Println("Tick at", t)
i++
if i == 3 {
ticker.Stop()
break
}
}
fmt.Println("Ticker stopped")
}

浙公网安备 33010602011771号