博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go的timer定时器实现
阅读量:5125 次
发布时间:2019-06-13

本文共 873 字,大约阅读时间需要 2 分钟。

示例如下:

package main import (    "fmt"    "time") func testTimer1() {    go func() {        fmt.Println("test timer1")    }() } func testTimer2() {    go func() {        fmt.Println(time.Now().String())    }()} func timer1() {    timer1 := time.NewTicker(1 * time.Second)    for {        select {        case <-timer1.C:            testTimer1()        }    }} func timer2() {    timer2 := time.NewTicker(5 * time.Second)    for {        select {        case <-timer2.C:            testTimer2()        }    }} func main() {   go  timer1()    	timer2()}

运行结果截屏如下:

  

 

看go的time部分源码 Ticker结构 

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

  

go的time和ticket的调用

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

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

go是 通过 chan

的阻塞实现的。

调用的地方,读取chan 

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

 

转载于:https://www.cnblogs.com/unqiang/p/6775617.html

你可能感兴趣的文章
sql表变量,临时表
查看>>
存储过程返回表
查看>>
套期会计
查看>>
存储过程获取QLIKVIEW关键数据
查看>>
借壳上市
查看>>
多组织的应用
查看>>
应收应付核销
查看>>
diary-2019.9.16
查看>>
收购与借壳上市的区别
查看>>
倒挤法
查看>>
允许物料批改
查看>>
FAQ About WOYO PDR007 Dent Removal Heat Induction System
查看>>
2016 New Mercedes Benz SD Connect C5 Better Quality Tested Great
查看>>
Why Launch X431 PRO MINI Bluetooth better than Diagun 3
查看>>
2017 Launch X431 Pro Mini review – newer & better than many tools
查看>>
Porsche Piwis Tester II V15.6 with CF30 Laptop or Lenovo E49AL Laptop
查看>>
MB Star C5 Xentry Connect Mercedes Benz SD Connect C5 Enhanced than Mercedes sds C4 scanner
查看>>
How to Connect Caterpillar ET Software from your Laptop to ECM
查看>>
Xtool x100 pad2 FAQS and the solutions for software cant working
查看>>
XTOOL X100 Pad2 Read Peugeot 206 BSI Pin Code Test Report
查看>>