<7> go time定时器

原创 2015年11月20日 16:14:10

ticker := time.NewTicker(time.Second * 3)
生成一个ticker定时器,三秒后执行即ticker.C会输出一个IO


import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    // 使用 select return 来关闭,定时器只会执行一次
    go func() {
        ticker := time.NewTicker(time.Second * 3)
        defer ticker.Stop()
        for {
            select {
            case <-ticker.C:
                fmt.Printf("hello, I'am ")
                return
            }
        }
    }()

    // 使用 channal来关闭
    go func() {
        ticker := time.NewTicker(time.Second * 3)
        defer ticker.Stop()
        ch := make(chan bool)
        for {
            select {
            case <-ticker.C:
                fmt.Printf("hello, I'am ")
            case <-ch:
                return
            }
        }
        close(ch)
    }()




    // 防止main过早跳出
    var input string
    fmt.Scanln(&input)
    fmt.Println("done")
}

用Golang实现基于时间轮算法的定时器

package timingwheelimport ( //"container/list" //"fmt" "sync" "time" "timer_serv...
  • socho
  • socho
  • 2016年06月12日 17:13
  • 2159

Go语言time包的练习及封装

把time包相关的函数用法过了下,基本包含大部份常见的用法了. 并封装了下日期显示格式定制及time.Time数组排序的功能.以便以后调用. 保留下测试所用例子:  package main //...
  • xcltapestry
  • xcltapestry
  • 2015年01月14日 15:31
  • 2795

Go语言中Time的用法[2]

Date函数: 定义:func Date(yearint, month Month, day, hour, min, sec, nsec int, loc *Location) Time 函数基于...
  • qwertyupoiuytr
  • qwertyupoiuytr
  • 2017年02月17日 01:17
  • 1780

golang中time包用法

time包中包括两类时间:时间点(某一时刻)和时常(某一段时间) 1时间常量(时间格式化) const ( ANSIC = "Mon Jan _2 15:04:05 2...
  • chenbaoke
  • chenbaoke
  • 2014年11月26日 17:47
  • 23448

【golang】Go语言学习-time包

go语言的time包 组成 time.Duration(时长,耗时)time.Time(时间点)time.C(放时间点的管道)[ Time.C:=make(chan time.Time) ] ...
  • zhonglinzhang
  • zhonglinzhang
  • 2015年05月22日 09:27
  • 10117

go - time包的定时器/断续器

from: https://www.kancloud.cn/digest/batu-go/153534定时器在time包中有两个函数可以帮助我们初始化time.Timertime.Newtimer函数...
  • hotdust
  • hotdust
  • 2017年11月18日 11:46
  • 90

[golang]time.After 在select中使用的正确姿势(解决超时逻辑未生效bug)

前言select 的语法如下所示每个case都必须是一个通信 所有channel表达式都会被求值 所有被发送的表达式都会被求值 如果任意某个通信可以进行,它就执行;其他被忽略。 如果有多个case都可...
  • ZongYinHu
  • ZongYinHu
  • 2017年01月23日 19:34
  • 4886

golang:一个高性能低精度timer实现

在go自带的timer实现中,采用的是通常的最小堆的方式,具体可以参见这里。 最小堆能够提供很好的定时精度,但是,在实际情况中,我们并不需要这样高精度的定时器,譬如对于一个连接,如果它在2分钟以...
  • siddontang
  • siddontang
  • 2014年04月16日 10:24
  • 5671

Go 语言简介(下)— 特性<转载>

原文地址:http://news.cnblogs.com/n/163075/ 本系列博客为个人学习收藏,转载部分均贴出原文路径。 《Go 语言简介(上):语法》   goro...
  • wuwenxiang91322
  • wuwenxiang91322
  • 2013年06月03日 23:15
  • 2408

Golang 奇葩的时间包之Json与struct对象之间互相转换,JsonDate和JsonTime自定义类型如何实现json编码和解码(二)

JsonDate和JsonTime自定义类型如何实现json编码和解码
  • zhengzizhi
  • zhengzizhi
  • 2017年06月25日 06:07
  • 843
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:<7> go time定时器
举报原因:
原因补充:

(最多只允许输入30个字)