低精度定时器的使用

tbox提供了两种定时器:linux

一种是基于最小堆的高精度定时器,精确到ms级别,可是时间复杂度在O(logn)git

还有一种就是基于timing-wheel时间轮算法的低精度定时器,时间复杂度仅为O(1),实常数级别的,至关的快。github

这个定时器是参考了linux内核的timer算法实现,不过linux那个比较通用,实现复杂,tbox中为了考虑精简性和低资源,对其算法作了精简算法

使得其资源占用更小,效率更高,可是使用场景上会有些限制,能够根据本身的实际状况,来判断使用须要用这个定时器来优化性能,仍是使用高精度版本。api

ltimer低精度定时器,提供了几种精度模式:服务器

  • TB_LTIMER_TICK_100MS:100毫秒级别
  • TB_LTIMER_TICK_S:秒级别
  • TB_LTIMER_TICK_M:分钟级别
  • TB_LTIMER_TICK_H:小时级别

ltimer考虑到资源问题,同时只能使用一种精度级别,不可以像linux的timer那么通用,但实现更加简单了。。并发

通常状况下,使用秒级别就够了,使用场景能够是:socket

  • 针对服务器中socket超时定时器的管理和优化,这种精度不会过高,使用秒级别超时就ok了,可是在高并发下性能提高却很明显
  • 针对一些精度要求不高的定时器场合,尤为是每秒钟一次的地方

具体使用其实跟timer差很少,只要接口换成ltimer就好了,具体可参考:高精度定时器的使用高并发

二者的api是相似的,这里就不细说了。性能


相关文章
相关标签/搜索