当前位置: 首页>行业 >

Go定时器的三种实现方式

来源: | 时间: 2022-12-29 10:34:23 |

很多时候需要周期性的执行某些操作,就需要用到定时器。定时器有三种思路。

Sleep

使用休眠,让当前Goroutine休眠一定的时间来实现定时的效果,缺点是程序执行速度不均匀,导致定时周期不均匀。

for{fmt.Println(time.Now())time.Sleep(time.Second*1)}


(资料图片)

Timer

Go语言的内置包,指定一个时间开始计时,时间到之后会向外发送通知,发送通知的方式就是使用<-chan Time返回内容。

第一种方式,直接在需要等待处使用,效果和Sleep一样,一使用就卡在那了内部就是使用了Timer。

fmt.Println(time.Now())<-time.After(1*time.Second)fmt.Println(time.Now())

也可以把他拆分开,在任意地方进行等待

timer:=time.NewTimer(1*time.Second)<-timer.Cfmt.Println(time.Now())

但是以上只是做到延迟一次性执行,我们来改造一下,把他变成定时器。

done:=make(chanstruct{})timer:=time.NewTimer(1*time.Second)gofunc(){for{select{case<-timer.C:fmt.Println(time.Now())timer.Reset(1*time.Second)case<-done:return}}}()<-time.After(5*time.Second+time.Millisecond*100)done<-struct{}{}

定义子Goroutine的目的是为了防止形成死锁,让定时器最终能退出,在实际项目中可能需要一个永久运行的定时器,一般为了不影响项目主逻辑也会这样定义。如果你的项目就是定时任务,我建议也这么写,这样可以注册很多个定时器互不影响。done是为了判断执行是否结束,防止主Goroutine提前退出。这个示例只有两个case,实战中如果有加其他case需要给每个case内都做一次Reset,保证重置定时器。Ticker

相比上述使用延迟执行功能实现的定时器,Ticker本身就是一个定时器(内部封装了Timer),我们使用起来就非常简单。

ticker:=time.NewTicker(1*time.Second)gofunc(){for{<-ticker.Cfmt.Println(time.Now())}}()<-time.After(5*time.Second+time.Millisecond*100)ticker.Stop()

在select 一节中讲述的官方超时控制方案非常的实用,也是使用的此函数。还使用到timer.Stop和timer.Reset这两个内置函数这里就不展开讲解了,建议进行复习。

小结

定时器一般用来周期性执行任务,比如定时同步数据、计算报表、发送通知。

time.Sleep使用休眠,让当前goroutine休眠一定的时间来实现定时的效果,缺点是内部逻辑执行的速度会影响到定时器的时间差,无法做到精确间隔。Timer类似于Sleep的延迟处理,通过channel来获得通知,也可以改造成定时器。因为是延迟处理,所以要记得重置时间来实现定时执行的效果。Ticker现成的定时器,内部也是封装了 Timer。

关键词:

 

热文推荐

Go定时器的三种实现方式

很多时候需要周期性的执行某些操作,就需要用到定时器。定时器有三种思路。Sleep使用休眠,让当前Goroutine休眠一定的时间来实现定时的效果,

2022-12-29

世界热点!这一冷门板块大爆发!

这一冷门板块大爆发!

2022-12-28

A股震荡收跌,电力旅游强势上行,关注安全与创新、疫后修复两条主线

12月28日,A股三大指数集体低开,早盘市场探底后回升,深成指、创业板指一度跌超1%;午后A股再度陷入低迷,市场震荡走弱,三大指数全线收跌。

2022-12-28

热点!光伏股早盘集体走高,截至发稿,信义能源(03868.HK)涨9.33%,报2.46港元

光伏股早盘集体走高,截至发稿,信义能源涨9 33%,报2 46港元;协鑫新能源(00451 HK)涨7 44%,报1 3港元;信义光能(00968 HK)涨7 34%,报8 77

2022-12-28

环球聚焦:四大坚果分别是指什么?

栗子、核桃、杏仁、松子、榛子等坚果营养丰富,而且每种坚果的营养成分都不同,除了根据个人的口味喜好进行选择外,我们还可以根据身体状况和

2022-12-28

当前速读:正邦科技: 第七届监事会第五次会议决议公告

正邦科技:第七届监事会第五次会议决议公告

2022-12-27

​机器学习数据不满足同分布,怎么整?

机器学习作为一门科学,不可避免的是,科学本身是基于归纳得到经验总结,必然存在历史经验不适用未来的情况(科学必可证伪)。这里很应景地讲

2022-12-27

割的双眼皮,上眼皮增生了怎么办? 资讯推荐

双眼皮手术常联合开眼角手术同时进行,使眼睛变得更长、更大,适合于眼间距较宽者,开眼角后眼睛显得更加协调,开眼角后1-3个月疤痕颜色红、硬

2022-12-27

叮当钱包借款逾期八年会上征信吗

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后上报给征信机构,因为有些借贷机构可

2022-12-27

热议:三星新材(603578.SH)三名董事高管共减持2.1万股 减持期满

智通财经APP讯,三星新材(603578)(603578 SH)发布公告,自2022年6月29日至2022年12月26日,公司董事、副总经理、技术负责人张金珠女

2022-12-26

“阳康”后多久能运动?遇到其他毒株,会二次感染吗?医生解答来了|当前简讯

现在大家都很关心新冠转阴后康复中的一些问题,比如“阳康”后是否会二次感染?转阴就是彻底康复了吗?遇到其他毒株,二次感染的风险有多大?

2022-12-26

华夏野村日经225ETF净值下跌1.37% 请保持关注_焦点

华夏野村日经225ETF净值下跌1 37%请保持关注

2022-12-26

新鲜的香菇要怎么做才好吃 香菇的做法

1、用料:香菇160G、油菜200G、盐适量、葱适量、生姜适量、蒜适量、辣椒适量、蚝油适量、淀粉适量、胡椒粉适量、香油适量。2、准备洗净的鲜香

2022-12-25

环球播报:钢价大涨近200!确定了,元旦之前,钢价这样走...

中央经济工作会议定调,恢复经济发展依然是占据头等地位,银保监会、央行等继续发挥金融资金支撑作用,加上港口及航班逐步开放,扩大需求,宏

2022-12-24

横琴首个垃圾分类主题大型艺术展开展

横琴粤澳深度合作区城市规划和建设局副局长王颉在致辞邓媛雯摄中新网珠海12月23日电(记者邓媛雯)23日,由横琴粤澳深度合作区城市规划和建设局

2022-12-23

紫天科技14亿买豌豆尖尖收问询函 标的评估增值836% 环球新要闻

近日,深圳证券交易所发布关于对福建紫天传媒科技股份有限公司的重组问询函(创业板许可类重组问询函〔2022〕第18号)。上市公司拟以发行股份

2022-12-23

最新快讯!珠江股份:公司将结合市场机会及经营需要,合理铺排融资计划

珠江股份(600684)12月23日在投资者关系平台上答复了投资者关心的问题。

2022-12-23

环球关注:邮你贷借款逾期二年延迟还款征信会怎么样

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后上报给征信机构,因为有些借贷机构可

2022-12-23

环球头条:同兴达: 深圳同兴达科技股份有限公司关于股东减持股份的进展公告

同兴达(TXD)                  深圳同兴达科技股份有限公司公告(2022)  证券代码:002845        证券简称:

2022-12-22

A股早评:沪指开盘涨0.57% 地产板块大幅高开居前

格隆汇12月22日丨两市主要指数大幅高开,沪指涨0 57%报3085点,深成指涨0 59%报10976点,创业板指涨0 65%报2318点。行业板块全线上涨,地产板

2022-12-22

资讯

北京推出14条秋游文化线路

金秋时节,北京市文化和旅游局以赏银杏品文化为主题,推出14条“叶落的季节——漫步北京赏银杏品文化主题线路”,邀市民和游客以步行、骑行

2021-10-27     
基因编辑发力 培育高质量人源化供体猪

此次人体试验,仅仅验证了基因编辑猪克服异种器官移植的超急性排斥反应,还需解决延迟性排斥反应、消耗性血栓等问题。但通过这次试验,能更

2021-10-27     
中国经济高质量发展步伐稳健 长期向好基本面未变

在全球疫情走势和经济走势趋于复杂的背景下,中国经济巨轮将驶向何方,举世关注。2020年10月26日至29日,党的十九届五中全会在京举行,明确

2021-10-27     
南美解放者杯决赛允许近4.5万观众入场

南美洲足联主席多明格斯25日与今年解放者杯决赛对阵的两支俱乐部负责人会晤,宣布决赛现场观众人数增加到球场容量的75%,即近4 5万人。今年

2021-10-27     
22年从警生涯 面对荣誉他说不要给我报功

9月24日,时任安徽省安庆市公安局迎江分局刑警大队大要案中队中队长周磊因在工作中激烈搏斗引发心源性猝死,倒在了工作岗位上,经医院抢救

2021-10-27     
走近冬奥|五棵松体育中心场馆“黑科技”全面上岗 助力冬

“相约北京”冰球国内测试活动将于2021年11月7日至10日在五棵松体育中心场馆举行,在疫情防控方面,场馆引入了诸多“黑科技”,为防疫安全

2021-10-27