zoukankan      html  css  js  c++  java
  • go 的 time ticker 设置定时器

    上示例

    package main
    
    import (
        //    "bytes"
        //    "encoding/json"
        "fmt"
        //    "os"
        //    "gopkg.in/mgo.v2"
        //    "gopkg.in/mgo.v2/bson"
        //    "io/ioutil"
        //    "net/http"
        //    "strings"
        //    "net/url"
        "time"
    )
    
    func main() {
        ticker := time.NewTicker(10 * time.Second)
        for i := 0; i < 10; i++ {
            time := <-ticker.C
            fmt.Println(time.String())
        }
    }

    执行结果

    wifimac:webdemo cdpmac$  go run src/server/timetest.go 

    2015-08-24 16:22:23.590564088 +0800 CST

    2015-08-24 16:22:33.591194618 +0800 CST

    2015-08-24 16:22:43.587720967 +0800 CST

    2015-08-24 16:22:53.590231413 +0800 CST

    2015-08-24 16:23:03.591164202 +0800 CST

    ....

    懂的已经不用往下看了。

     

    找不到现成的资料。

    看官方包的示例test代码

    看go的time部分源码 Ticker结构 

    type Ticker struct {
    
    C <-chan Time // The channel on which the ticks are delivered.
    
    r runtimeTimer
    
    }

    Time也类似

    有一个只读的chanel


    go的time和ticket的调用

    或者叫timmer internal和其他语言的开发思路不一样。

    其他语言,多是注册回调函数,定时,时间到了调用回调。

    go是 通过 chan

    的阻塞实现的。

    调用的地方,读取chan 

    定时,时间到,向chan写入值,阻塞解除,调用函数。 

  • 相关阅读:
    Java生产者与消费者(下)
    Java生产者与消费者(上)
    Java中的继承和接口
    syslog(),closelog()与openlog()--日志操作函数
    Nagle算法
    TCP_NODELAY详解
    Linux "零拷贝" sendfile函数中文说明及实际操作分析
    pdflush的工作原理
    proc/sys/net/ipv4/下各项的意义
    求最低价格
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/4755168.html
Copyright © 2011-2022 走看看