• golang计时器


    timer 计时器

    用于在指定的Duration类型时间后调用函数或计算表达式。
    如果只是想指定时间之后执行,使用time.Sleep()
    使用NewTimer(),可以返回的Timer类型在计时器到期之前,取消该计时器
    直到使用<-timer.C发送一个值,该计时器才会过期

    定义计数器
    timer := time.NewTimer(time.Second * 2)
    停止定时器
    timer.Stop()
    强制的修改timer中规定的时间
    timer.Reset(0)

    间隔执行
    time包中有个Ticker可以用来实现简单的定时任务。

    ticker := time.NewTicker(5 * time.Second)
    for _ = range ticker.C {
        fmt.Println(time.Now())
    }
    

    Ticker会在每隔一段时间执行,比如上面的例子中,每隔5秒打印一下当前时间。

    package main
     
    import (
        "fmt"
        "time"
        "sync"
    )
     
    func main() {
        ticker := time.NewTicker(5 * time.Second)
        quit := make(chan int)
        var wg  sync.WaitGroup
     
        wg.Add(1)
        go func() {
            defer wg.Done()
            fmt.Println("child goroutine bootstrap start")
            for {
                select {
                    case <- ticker.C:
                        fmt.Println("ticker .")
                    case <- quit:
                        fmt.Println("work well .")
                        ticker.Stop()
                        return
                }
            }
            fmt.Println("child goroutine bootstrap end")
        }()
        time.Sleep(10 * time.Second)
        quit <- 1
        wg.Wait()
    }
    

    打印结果:

    child goroutine bootstrap start
    ticker .
    ticker .
    work well .
    
  • 相关阅读:
    nginx 转发配置
    Rancher中httpd证书的管理和使用
    JDK-docker
    软路由
    rancher相关
    rancher部署
    电商 好文 知识积累
    SpringBlade 接口文档 请求token接口报错
    SpringBlade 接口文档 无法访问
    电商 好文
  • 原文地址:https://www.cnblogs.com/haima/p/13834594.html
Copyright © 2020-2023  润新知