从 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 @   技术颜良  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2018-04-04 split-brain 脑裂问题(Keepalived)
点击右上角即可分享
微信分享提示