从 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)
		}
	}
}

看例子感觉是定期把时间放入到一个管道中,下面带着我们的猜测进入到源码中。

posted @ 2022-04-04 10:31  技术颜良  阅读(32)  评论(0编辑  收藏  举报