golang中定时器实现,Ticker,Timer

Posted Leo Han

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang中定时器实现,Ticker,Timer相关的知识,希望对你有一定的参考价值。

在golang中,我们可以通过time包的Sleep、Ticker、Timer来实现定时效果。

Sleep

先看Sleep如何实现一个定时:

func main() 
	var flag chan int
	go func() 
		for 
			time.Sleep(time.Duration(time.Second*5))
			fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
		
	()
	<-flag


Ticker实现:

func main() 
	var flag chan int
	ticker := time.NewTicker(time.Duration(time.Second*5))
	go func() 
		for 
			<- ticker.C
			fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
		
	()
	<-flag

Timer实现:

func main() 
	var flag chan int
	timer := time.NewTimer(time.Duration(time.Second*5))
	go func() 
		for 
			<- timer.C
			fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
			timer.Reset(time.Duration(time.Second*5))
		
	()
	<-flag

这其中,Ticker是一种循环的计时器,而Timer时间到期只会运行一次,不会重复执行,除非reset超时时间,一般Timer用来进行超时的处理判断。

以上是关于golang中定时器实现,Ticker,Timer的主要内容,如果未能解决你的问题,请参考以下文章

golang 中timer,ticker 的使用

Golang如何正确的停止Ticker

[golang]定时器

go语言中的timer 和ticker定时任务

Golang——time.Ticker定时器

golang的Timer定时器