多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## Ticker对外接口 ### 创建定时器 使用NewTicker方法就可以创建一个周期性定时器,函数原型如下: ~~~go func NewTicker(d Duration) *Ticker ~~~ 其中参数`d`即为定时器事件触发的周期。 ### 停止定时器 使用定时器对外暴露的Stop方法就可以停掉一个周期性定时器,函数原型如下: ~~~go func (t *Ticker) Stop() ~~~ 需要注意的是,该方法会停止计时,意味着不会向定时器的管道中写入事件,但管道并不会被关闭。管道在使用完成后,生命周期结束后会自动释放。 Ticker在使用完后务必要释放,否则会产生资源泄露,进而会持续消耗CPU资源,最后会把CPU耗尽。更详细的信息,后面我们研究Ticker实现原理时再详细分析。 ## 简单接口 部分场景下,我们启动一个定时器并且永远不会停止,比如定时轮询任务,此时可以使用一个简单的Tick函数来获取定时器的管道,函数原型如下: ~~~go func Tick(d Duration) <-chan Time ~~~ 这个函数内部实际还是创建一个Ticker,但并不会返回出来,所以没有手段来停止该Ticker。所以,一定要考虑具体的使用场景 ***** 【总结】 * 使用time.NewTicker()来创建一个定时器; * 使用Stop()来停止一个定时器; * 定时器使用完毕要释放,否则会产生资源泄露;