zoukankan      html  css  js  c++  java
  • 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 设置后无法重新设置
  • 相关阅读:
    NOIp前做题记录
    长链剖分学习笔记
    Java可重入锁AQS 和 CAS原理
    Shiro企业级实战详解,统一的Session管理。
    Jdk动态代理
    NIO实现的客户端和服务端
    Java编写生成mybatis xml文件、Dao文件、实体类和DTO
    [FreeRTOS入门] 1.CubeMX中FreeRTOS配置参数及理解
    Linux系统手动安装Firefox浏览器
    各种版本的firefox 下载
  • 原文地址:https://www.cnblogs.com/Frange/p/14817778.html
Copyright © 2011-2022 走看看