目錄
是乙個單層時間輪,當指標走到某一格上,就獲取那一格上掛的任務將其執行。
當時如果時間跨度大的時候,格仔數明顯不夠,那麼就可以做成多級時間輪。
其實就是當低層的時間輪走了一圈,將它高一層的時間輪走一格,並且將掛在高層時間輪上的任務分配下來。
檔案#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定時器分為低精度定時器和高精度定時器兩種型別,核心對其均有實現。本文討論的是我們在應用程式開發中比較常見的低精度定時器。作為常用的基礎元件,定時器常用的幾種實現方法包括 基於排序...