golang Timer&Ticker

Timer

type Timer struct{
    c <- chan Time
}
  • 代表单次时间事件, 当Timer 到期会发送给C

方法

  • func NewTimer(d Duration) *Timer
    • 创建一个Timer
  • func AfterFunc(d Duration, f func()) *Timer
    • 新开一个协程, 等待 d 时间后执行函数 f
    • 返回一个 *Timer, 可以用来调用 Stop(),Rest()
  • func (t *Timer) Reset(d Duration) bool
    • Reset使t重新开始计时,(本方法返回后再)等待时间段d过去后到期。如果调用时t还在等待中会返回真;如果t已经到期或者被停止了会返回假。无论执行与否,都会重置
  • func (t *Timer) Stop() bool
    • Stop停止Timer的执行。如果停止了t会返回真;如果t已经被停止或者过期了会返回假

Ticker

type Ticker struct {
    C <-chan Time // 周期性传递时间信息的通道
    // 内含隐藏或非导出字段
}

方法

  • func NewTicker(d Duration) *Ticker
    • NewTicker返回一个新的Ticker,该Ticker包含一个通道字段,并会每隔时间段d就向该通道发送当时的时间。
    • 会调整时间间隔或者丢弃tick信息以适应反应慢的接收者。
  • func (t *Ticker) Stop()
    • Stop关闭一个Ticker。在关闭后,将不会发送更多的tick信息

对比Timer & Ticker

  • Timer 只执行一次,Ticker会循环执行,Timer 可通过重置方法来实现Ticker 类似的功能
  • Timer 可以定时执行一个函数, Ticker 通过for 循环可以实现相同功能
  • Timer 可以重置,Ticker 设置后无法重新设置
posted @ 2021-05-27 14:32  frange  阅读(140)  评论(0编辑  收藏  举报