每日消息!Go定时器的三种实现方式
很多时候需要周期性的执行某些操作,就需要用到定时器。定时器有三种思路。
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休眠一定的时间来实现定时的效果,
全球快消息!满足“千人千面”需求:江苏东台个性化税政为规上企业赋能加速
“税务局‘一对一’服务的政策解读,及时又精准,让我们不仅详细了解了税收政策,更收获了真金白银的退税‘大礼包’,增添了发展信心。东台...
环球百事通!鄂湘赣三省推进五大领域协同发展取得成效
(记者梁婷)湖北、湖南、江西三省推进五大领域协同发展,取得明显成效。武汉东湖国家自主创新示范区、长株潭、鄱阳湖协同发展,武汉光谷科创大
海南高速:公司在海口市、琼海市经营“金银岛”品牌连锁酒店|环球微动态
海南高速(000886)12月23日在投资者关系平台上答复了投资者关心的问题。投资者:你好!贵公司在海南省那些地区有自主运营的酒店和旅游服务?贵
吉视传媒:12月22日融券卖出金额25.77万元,占当日流出金额的0.93%_焦点观察
同花顺数据中心显示,吉视传媒12月22日获融资买入245 10万元,占当日买入金额的13 35%,当前融资余额2 76亿元,占流通市值的4 45%,低于历史20
34股遭大宗低价甩货 最低7.8折
CFi CN讯: 12月22日大宗交易显示,有34股低于9 5折甩卖,最低仅7 8折,其中折价最高的前三名分别为宏微科技(688711)[-22 14%]、芒
国金证券:白酒需求边际回暖 啤酒高端化进度加快可期 今日讯
智通财经APP获悉,国金证券发布食品饮料研究报告称,三个维度值得重点关注1)短期消费需求恢复节奏2)成本变化情况3)中长期消费形式变化。持续看
当前快讯:深圳这一幕,刷屏!
最近多地出现退烧药等紧急药品“一药难求”的局面在这种情况下却有人愿意免费送药。在药店门外,张贴着两处赠药告示——记者看到,药店内前...
五大A股上市险企前11月原保费收入2.4万亿 同比增长3.64%_速讯
中国网是国务院新闻办公室领导,中国外文出版发行事业局管理的国家重点新闻网站。本网通过10个语种11个文版,24小时对外发布信息,是中国进行
胎压监测板块12月20日涨1.13%,索菱股份领涨,主力资金净流入9530.06万元
12月20日胎压监测板块较上一交易日上涨1 13%,索菱股份领涨。当日上证指数报收于3073 77,下跌1 07%。深证成指报收于10949 12,下跌1 58
让机器“活”起来 智能制造塑造工业新范式 世界百事通
在山东一家汽车零配件企业的生产车间,工作人员通过智能终端扫描发动机缸体上的二维码,能够准备溯源生产信息、异常信息、过程质检等重要数据
兴业信托:净利由正转负发生质变
2022年上半年,兴业信托年实现净利润为-2 48亿元,绝对值直接由正转负。在2021年营收微增净利下降的基础上,2022年兴业信托业绩发生了质变。本
奇正藏药:截至2022年12月9日、截至2022年11月30日,公司股东总人数均为23,234-世界今日讯
奇正藏药(002287)12月13日在投资者关系平台上答复了投资者关心的问题。
关爱困境儿童 项城市爱心团队在行动
12月5日,项城市工商联爱心公益平台、项城市骄阳爱心公益团队开展了“让爱在冬天里绽放之关爱困境儿童”志愿服务活动,给困境儿童送上了浓...
招联好期贷网贷逾期四年还不起会影响征信吗 世界短讯
网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后上报给征信机构,因为有些借贷机构可
花旗银行宣布将关闭花旗中国个人银行业务,该行在华营收持续下滑分支机构注销过半|每日消息
花旗银行宣布将关闭花旗中国个人银行业务,该行在华营收持续下滑分支机构注销过半
今日生猪收购价格,今日生猪价格表 每日短讯
重庆德佳食品白条肉价稳定重庆德佳食品屠宰场价格稳定海南新希望生猪出栏价格稳定广东新希望生猪出栏价格上涨,但消费疲软。散户应该怎么做?
1—10月中国光伏产业各环节产量再创新高
(记者刘育英)中国工业和信息化部15日发布的数据显示,2022年1—10月,中国光伏产业运行良好,技术水平持续提升,各环节产量再创新高。工信部此
全球百事通!森林包装董秘回复:公司的包装箱(盒)大类主要有彩印(胶印)、水印、数码类瓦楞纸箱(盒)和精品礼盒等
森林包装(605500)12月16日在投资者关系平台上答复了投资者关心的问题。投资者:请问在药厂行业有公司的客户吗?比如浙江医药等医药行业。公司
【世界独家】百纳千成(300291)12月15日主力资金净卖出473.28万元
截至2022年12月15日收盘,百纳千成(300291)报收于4 67元,下跌3 31%,换手率1 53%,成交量11 91万手,成交额5616 9万元。12月
环球最新:港股异动 | 携程集团(9961.HK)高开近5% Q3营收、利润均超预期 调整后EBITDA利润率显著提高
格隆汇12月15日丨携程集团高开近5%,报272港元,总市值1745亿港元。该公司第三季度收入69亿元人民币,超预期的65 2亿元;其中国内酒店预订收入
当前快播:天铁股份: 浙江天铁实业股份有限公司独立董事关于第四届董事会第二十八次会议相关事项的独立意见
浙江天铁实业股份有限公司 独立董事关于第四届董事会第二十八次会议相关事项的 独立意见 根据中国证
天天微头条丨雀友麻将机t600价格(麻将机品牌)
我卖麻将机的雀友机,虽然贵,天猫雀友旗舰店的价格。想卖麻将机,最低租三个月。恭喜3200元系列!3000左右。家用C200就可以了。常见品牌麻将
三一重能(688349.SH):770.0618万股限售股将解禁 世界报道
格隆汇12月13日丨三一重能公布,此次上市流通的网下配售限售股份数量为770 0618万股,限售期为自公司股票首次公开发行上市之日起6个月;此次网
昱能科技:公司目前主力产品采用多体架构路线,可以实现更低的单瓦成本,产品性价比更优
同花顺(300033)金融研究中心12月13日讯,有投资者向昱能科技提问,公司对标enphaseenergy优势、劣势在哪?公司回答表示,您好,公司与enphas