从 time.Ticker 分析 go 的定时器
要研究 Go
的定时器,那么肯定要从 time.Ticker
这个结构体入手。
先看一个官网的例子:
func main() {
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
done := make(chan bool)
go func() {
time.Sleep(10 * time.Second)
done <- true
}()
for {
select {
case <-done:
fmt.Println("Done!")
return
case t := <-ticker.C:
fmt.Println("Current time: ", t)
}
}
}
看例子感觉是定期把时间放入到一个管道中,下面带着我们的猜测进入到源码中。