Golang中定时器的陷阱详解
在业务中,我们经常需要基于定时任务来触发来实现各种功能。比如TTL会话管理、锁、定时任务(闹钟)或更复杂的状态切换等等。百纳网主要给大家介绍了关于Golang定时器陷阱的相关内容,所谓陷阱,就是它不是你认为的那样,这种认知误差可能让你的软件留下隐藏Bug。刚好Timer就有3个陷阱,我们会讲1)Reset的陷阱和2)通道的陷阱,3)Stop的陷阱与Reset的陷阱类似,自己探索吧。所以,当Reset返回false时,我们并不能认为一段时间之后,超时不会到来,实际上可能会到来,定时器已经生效了。定时器的缓存通道大小只为1,无法多存放超时事件,看源码。比如,处理流程是:设置1次定时器,处理一次定时器,中间无中断,下次Reset前,通道必然是空的。