首页 > 其他 > 详细

golang计时器

时间:2020-10-18 16:40:49      阅读:35      评论:0      收藏:0      [点我收藏+]

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 .

golang计时器

原文:https://www.cnblogs.com/haima/p/13834594.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!