thinkphp每天定时重复执行一条程序_Go语言学习基础-定时器、计时器

本文介绍了Go语言中的Timer和Ticker功能,用于定时执行和重复执行任务。Timer适用于单次未来事件,而Ticker则适合周期性任务。通过示例展示了如何创建、使用和停止Timer及Ticker,并解释了它们与time.Sleep的区别。
摘要由CSDN通过智能技术生成

Timer计时器

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

先看定时器timer,然后再看计时器ticker。定时器代表未来的单个事件。告诉定时器需要等待多长时间,它返回一个通道,时间到后通道得到通知。如例所示设置定时器将等待2秒,语法

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

ce0ae899a1b17e6758a289be33f8f1c4.png

结果:

$ go run timers.go

Timer 1 fired

Timer 2 stopped

Ticker计时器

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

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

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

f7273820a8bee8e6c498669d5f0194fc.png

结果:

$ 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值