当前位置:首页>焦点 > >正文

Go定时器的三种实现方式 天天热推荐

  • 2022-12-27 16:17:47来源:

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

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休眠一定的时间来实现定时的效果,

简讯:为什么我煮的汤圆汤不清澈?

1、速冻的汤圆,从冰箱拿出后,一定要放置一小会,这样容易煮熟,而且不浑汤。2、煮汤圆时一定要把水烧开后再下入汤圆。期间用筷子或饭勺轻推

浙江控阀净利连升经营现金净额连降 H1应收账款超营收 全球时讯

中国经济网编者按:创业板上市委2022年第89次审议会议定于2022年12月30日召开,届时将审核浙江三方控制阀股份有限公司(以下简称“浙江控阀”)

精选!博汇纸业(600966):2022年第五次临时股东大会决议

证券代码:600966证券简称:博汇纸业公告编号:2022-085山东博汇纸业股份有限公司2022年第五次临时股东大会决议公

受降雪影响 河南近50条高速路段采取临时限行措施-今日讯

受降雪影响,目前河南境内近50条高速路采取临时限行措施。截至12月26日8时30分,禁止所有车辆上站的高速有:连霍高速:新安站-新安西站、巩义

国泰标普500ETF(QDII)净值下跌1.36% 请保持关注 每日看点

国泰标普500ETF(QDII)净值下跌1 36%请保持关注

新鲜牛肉煮番茄汤底怎么做 怎么用新鲜牛肉煮番茄汤底

1、材料:牛肉200g、土豆1个、胡萝卜1根、西红柿2个、洋葱1个。2、牛肉切成小丁,放入清水中,大火,焯熟。3、西红柿割十字,放入开水中,去皮

全球今日报丨小米米家智能台式洗碗机 5 套 S1 今日预售,到手价 1499 元

IT之家12月24日消息,小米米家智能台式洗碗机5套S1在今年11月开启了众筹,零售价1699元,众筹价1399元。现在已经在京东商城等开启预售,到手价

环球热讯:毅达资本黄韬:投资要有情怀

上证报中国证券网讯(王玉晴记者张雪)“投资要有情怀,这个情怀是对国家的使命,对社会的贡献,对员工的责任,赚钱是必须的,但更重要的,...

友发集团: 2022年第四次临时股东大会会议资料 世界快讯

天津友发钢管集团股份有限公司              2022 年第四次临时股东大会会议资料       天津友发钢管集团股份有限公司

新强联董秘回复:公司于2022年10月28日披露《关于持股5%以上股东减持股份预披露公告》

新强联(300850)12月23日在投资者关系平台上答复了投资者关心的问题。

全球新消息丨国家大剧院今日迎建院15周年

北京青年报记者田婉婷2022年是国家大剧院建院15周年,国家大剧院继续秉承“亲民、简朴、热烈、精彩”的原则,精心策划建院15周年线上系列演...

财政部:同意体育总局停止销售“金光闪烁7”等71款即开型体育彩票游戏

据财政部网站12月22日消息,财政部发布关于停止销售“金光闪烁7”等

哈尔滨银行荣获和讯网第二十届财经风云榜“年度区域服务领军银行”奖项

2022年12月22日,由和讯网主办的“第二十届中国财经风云榜之银行业评选”结果重磅揭晓。本次评选以“创变启新破局突围”为主题,在银行业中...

美国接近完成 3G 退网,中国或许就在明年

再过10天时间,也就是在2022年12月31日,美国主流电信运营商Vrizo就会关闭其3G网络。这一次,Vrizo态度很坚定,表示“该日期不会再延长”。至

汉商集团(600774)12月21日主力资金净卖出233.45万元

截至2022年12月21日收盘,汉商集团(600774)报收于11 81元,上涨1 03%,换手率1 46%,成交量4 32万手,成交额5114 43万元。

圆信永丰高端制造混合基金经理变动:胡春霞不再担任该基金基金经理 环球头条

2022年12月21日,圆信永丰高端制造(006969)发布公告,胡春霞不再担任该基金基金经理,离任日期为2022年12月21日,变更后圆信永丰高端制造(0

综述:欧盟就天然气价格上限达成一致

新华社布鲁塞尔12月19日电综述:欧盟就天然气价格上限达成一致新华社记者李骥志欧盟成员国能源部长19日举行会议,就设定天然气价格上限达成一

新疆阿克苏地区现有光伏发电装机容量108万千瓦|环球关注

(喇小飞)记者20日从新疆阿克苏地区发改委获悉,截至目前,阿克苏地区现有建成光伏发电站28处,光伏发电装机容量108万千瓦,占全地区发电装机容

多地官宣:无症状或轻症可正常上班!多家医院倡导无症状医护人员坚守岗位

近日,浙江、重庆、安徽等地均官宣无症状甚至轻症均可在做好防护的情况下正常上班,部分医院倡议医护人员无症状坚守岗位。据浙江新闻,12月18

派能科技(688063.SH):116.13万股限售股将于12月30日解禁上市-当前快播

格隆汇12月19日丨派能科技(688063 SH)公布首次公开发行战略配售限售股上市流通公告,此次上市流通的限售股为上海派能能源科技股份有限公司首次

《快乐大本营》王耀庆展舞技,一人饰两角鼻祖,实力敢与靳东叫板|全球滚动

每天都有大量娱乐解读资讯,客官右上角点个关注呗!王耀庆快乐大本营,范丞丞都被“迷倒”,吸引男生的大叔着实亮眼。《快乐大本营》的成团...

浙海德曼:12月16日融券卖出金额192.39万元,占当日流出金额的10.93%

同花顺数据中心显示,浙海德曼12月16日获融资买入260 95万元,占当日买入金额的26 93%,当前融资余额8459 69万元,占流通市值的10 32%,超过历

节目中情绪失控大哭,沈月发文进行回应:不想一辈子都当社恐!

这段时间有一部综艺非常出圈,就是由成龙大哥担当召集人的综艺《无限超越班》,该综艺请来了尔冬升、惠英红、赵雅芝、吴镇宇等演艺界的老前辈

影评|《阿凡达:水之道》:特效无与伦比,剧本四处漏风|天天快消息

继神作《阿凡达》之后,时隔13年时间,《阿凡达:水之道》(下文简称《阿凡达2》)在万众瞩目中揭开神秘的面纱。回想13年前,《阿凡达》的横空

今日视点:油价19日迎年内“最后一调”,或将“三连跌”

12月19日24时,国内新一轮成品油调价窗口将开启。本轮调价将是2022年国内油价“最后一调”。继上轮成品油价格“两连跌”后,机构预计,本轮...

佳能推出新全画幅传感器 1900万像素 支持全局快门

不久前,佳能发布了一款型号为LI5030SAC的1900万像素全画幅全局快门传感器,它峰值读取速度为58帧 秒,能够不失真地捕捉快速移动的物体。佳能

创新基因赋能高质量发展,卓尔智联(02098.HK)荣获“年度创新力奖“

随着后疫情时代的到来,新的环境对企业有了更高的要求,尤其是面对当前我国经济处于新旧动能转换这样一个关键时期,企业如何强化自身的核心竞

氮化镓板块12月15日涨1.52%,富满微领涨,主力资金净流入832.95万元 天天观速讯

12月15日氮化镓板块较上一交易日上涨1 52%,富满微领涨。当日上证指数报收于3168 65,下跌0 25%。从资金流向上来看,当日氮化镓板块主力资金净

治安故意伤害他人怎么处罚 世界视讯

《治安管理处罚法》第四十三条殴打他人的,或者故意伤害他人身体的,处5日以上10日以下拘留,并处200元以上500元以下罚款;情节较轻的,处5日

猜您喜欢

Copyright ©  2015-2022 北方服装网版权所有  备案号:京ICP备2021034106号-50   联系邮箱: 55 16 53 8@qq.com