低精度定時器的使用

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是相似的,這裏就不細說了。性能


相關文章
相關標籤/搜索