基於時間輪的定時器

2022-07-30 14:54:14 字數 1267 閱讀 9491

目錄

是乙個單層時間輪,當指標走到某一格上,就獲取那一格上掛的任務將其執行。

當時如果時間跨度大的時候,格仔數明顯不夠,那麼就可以做成多級時間輪。

其實就是當低層的時間輪走了一圈,將它高一層的時間輪走一格,並且將掛在高層時間輪上的任務分配下來。

檔案#include"timewheel.h"

#include#include#include#includestruct timestamp //時間戳

};struct event //掛在時間槽上的事件

;class timewheel //時間輪

;

檔案#include"timewheel.cpp"

#include"timewheel.h"

#includeusing namespace std;

timewheel::timewheel()

timewheel::~timewheel()

void timewheel::start() //開啟乙個執行緒

); mythread.detach();

}void timewheel::doloop() //主迴圈

else if(per.s!=timestamp.s) //秒針有進製

else if(per.ms!=timestamp.ms) //毫秒有進製

lock.unlock(); }}

int timewheel::getms(const timestamp ×tamp) //得到時間戳timestamp一共多少ms

void timewheel::solvingevents(listl)

else

}}void timewheel::getnexttime(timestamp &nowtimestamp,int dur)//獲得下乙個時間

//新增定時器

定時器 tick 時間輪定時器學習筆記

參考自時間輪的原理和手錶的指標計時類似,將任務結束的時間加入對應最高端的時間輪轉盤中。例如任務結束時間為4 30 20,時間輪盤有三個,分別對應,小時,分鐘和秒。開始時將任務加入4小時所在的時間輪中。四小時過去後,任務的剩餘時間時間為0 30 20就將任務加入30分所在的時間輪中。30分鐘過去後,將...

Linux的動態定時器 時間輪

定時器 有時也稱為動態定時器或核心定時器 是管理核心時間的基礎。定時器是一種軟體功能,即允許在將來的某個時刻,函式在給定的時間間隔用完時被呼叫。注意的是定時器並不會週期執行,它在超時後就自行銷毀,這也是定時器被稱為動態定時器的乙個原因。動態定時器不斷地建立和銷毀,而且它的執行次數也不受限制。定時器在...

linux定時器時間輪演算法詳解

linux高併發程式設計 紅黑樹實現定時器 時間輪實現定時器 linux多執行緒環境下海量定時任務的定時器設計 linux定時器分為低精度定時器和高精度定時器兩種型別,核心對其均有實現。本文討論的是我們在應用程式開發中比較常見的低精度定時器。作為常用的基礎元件,定時器常用的幾種實現方法包括 基於排序...