分享
  1. 首页
  2. 文章

go 的 time ticker 设置定时器,比较诡异......

zihunqingxin · · 10605 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

上示例

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

....

懂的已经不用往下看了。

我真是恨透了 go编译运行时的依赖检查!有引入,但没应用的包,有创建,但没有使用的的变量,不让过。

另发现了特别情况

输出时间,完全不按常理,

fmt.Println 理论上是按行输出,理这个例子里
其实结果是这样的

2015年08月24日 16:22:23.590564088 +0800 CST2015-08-24 16:22:33.591194618 +0800 CST2015-08-24 16:22:43.587720967 +0800 CST2015-08-24 16:22:53.590231413 +0800 CST2015-08-24 16:23:03.591164202 +0800 CST2015-08-24 16:23:13.588811769 +0800 CST2015-08-24 16:23:23.587282627 +0800 CST2015-08-24 16:23:33.588753016 +0800 CST2015-08-24 16:23:43.591157197 +0800 CST2015-08-24 16:23:53.589934072 +0800 CST

应该是shell的毛病

继续主题

找不到现成的资料。

看官方包的示例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写入值,阻塞解除,调用函数。


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:zihunqingxin

查看原文:go 的 time ticker 设置定时器,比较诡异......

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
10605 次点击
1 回复 | 直到 2000年01月01日 00:00:00
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏