• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go定时器timer和ticker

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

两种类型的定时器:ticker和timer。两者有什么区别呢?请看如下代码:

ticker


package main

import (
        "fmt"

        "time"
)


func main() {

        d := time.Duration(time.Second*2)

        t := time.NewTicker(d)
        defer t.Stop()

        for {
                <- t.C

                fmt.Println("timeout...")
        }
}

output:

timeout...

timeout...

timeout...

解析

ticker只要定义完成,从此刻开始计时,不需要任何其他的操作,每隔固定时间都会触发。

timer



package main

import (
        "fmt"

        "time"
)


func main() {

        d := time.Duration(time.Second*2)

        t := time.NewTimer(d)
        defer t.Stop()

        for {
                <- t.C

                fmt.Println("timeout...")
		// need reset
		t.Reset(time.Second*2)
        }
}

output:

timeout...

timeout...

timeout...

解析

使用timer定时器,超时后需要重置,才能继续触发。

ticker 例子展示


package main

import (
        "fmt"
        "time"
)


func main() {

        t := time.NewTicker(3*time.Second)
        defer t.Stop()

        fmt.Println(time.Now())
        time.Sleep(4*time.Second)


        for {

                select {

                case <-t.C:

                        fmt.Println(time.Now())

                }


        }

}

output:

2018-04-02 19:08:22.2797 +0800 CST

2018-04-02 19:08:26.3087 +0800 CST

2018-04-02 19:08:28.2797 +0800 CST

2018-04-02 19:08:31.2797 +0800 CST

2018-04-02 19:08:34.2797 +0800 CST


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言的cgo时用到的GCC编译器发布时间:2022-07-10
下一篇:
go语言 defer 你不知道的秘密!发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap