libevent定時器機制

超時機制

時間是時間點,比如8:40:35超時,那麼獲得當前時間,如果小於等於該時間,則視爲超時。

 

添加超時事件

添加超時事件的時候,添加相對時間,比如8s後超時,在內部會進行處理,即取得當前時間,加上超時時間,得到超時時間點。

struct timeval tv;
 
tv.tv_sec = 10; /* 10秒後超時 */
tv.tv_usec = 0;
 
evtimer_set(&ev, time_cb, NULL);
event_add(ev, &tv);


時間段與時間點轉換 

gettime(base, &now);

evutil_timeradd(&now, tv, &ev->ev_timeout);

取得當前時間now後,與用戶設置的相對時間(tv)相加,得到ev_timeout.


超時機制組織

通過一個小根堆,鍵值爲超時時間,這樣,每次檢測堆頂,查看是否有超時即可。

發佈了122 篇原創文章 · 獲贊 42 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章