关于定时器

今天突然想到一个问题,如果要设置一个5分钟的定时器,那么时间使用5*minute和5*60*Second有什么区别呢?或者说,设置成后者,程序会不会更累呢,会不会每秒钟都去检查下是不是到期了?

于是去翻了一下golang源码中time的NewTimer部分,如下:

关于定时器

原来人家这儿用的是duration,而duration其实是int64,貌似是统一的意思呢。

再看一下各个时间单位,如下:

关于定时器

原来所有的单位最后都是转换到duration上的,一个duration其实是一个纳秒。

所以,不管你时间设置的什么单位,最后都是转换到纳秒数上,这个东西应该就跟cpu的主频赫兹那玩意儿对上了,soga!

所以就清楚了,定时器设置成啥实际都是一样的,单位只是封装了一层给人编码好用而已。由此可知,所有时间相关的编码,也都跟单位没关系。所以,还是用程序更通用的单位毫秒好一些,上面就是5*60*1000*Millisecond。哦啦~