龙空技术网

Go语言学习基础-定时器、计时器

心学苹果鱼 114

前言:

此时小伙伴们对“c语言的计时器”大约比较注重,我们都想要知道一些“c语言的计时器”的相关内容。那么小编也在网络上搜集了一些有关“c语言的计时器””的相关内容,希望我们能喜欢,咱们快快来了解一下吧!

Timer计时器

如果希望在将来的某个时间点执行Go代码,或者在某个时间间隔重复执行Go代码,使用Go内置的timer和ticker功能。

先看定时器timer,然后再看计时器ticker。定时器代表未来的单个事件。告诉定时器需要等待多长时间,它返回一个通道,时间到后通道得到通知。如例所示设置定时器将等待2秒,语法<-timer1.C将阻塞定时器的内部通道C,直到定时器向通道发送一个指示定时器触发的值。

如果您只是想等待,则可以使用time.Sleep也可以实现相同的效果。使用定时器的好处是可以在它触发之前取消。下面是一个例子,定时器2需要足够的时间来触发,但立刻就被停止。因此结果是,第一个定时器在程序运行~2秒后触发,但第二个定时器触发之前就被停止了。

结果:

$ go run timers.go

Timer 1 fired

Timer 2 stopped

Ticker计时器

定时器是用来在未来做一次性任务时使用的,如果要重复地以指定间隔做某件事情时使用计时器。

这里有一个例子,一个ticker在我们停止它之前会周期性地触发,ticker使用类似于timers的机制:通道。例子中,将在通道上使用select语句来等待每500毫秒到达的值。

可以像停止定时器一样停止计时器。一旦计时器停止,无法在其通道上接收更多的值。1600ms后停止程序,在此之前,ticker应该触发了3次。

结果:

$ go run tickers.go

Tick at 2012-09-23 11:29:56.487625 -0700 PDT

Tick at 2012-09-23 11:29:56.988063 -0700 PDT

Tick at 2012-09-23 11:29:57.488076 -0700 PDT

Ticker stopped

标签: #c语言的计时器