libevent 定時器示例

 

 

程序執行結果:函數

 

 

 

 

 

每隔2秒,觸發一次定時器。spa

298行:evtimer_assignevent.h中定義以下:3d

 

再來看看event_assign函數:對象

 

ev     要初始化的事件對象blog

 

base    事件對象要指定到哪一個even_base上事件

 

fd      文件描述符回調函數

 

type   事件類型event

 fn     事件觸發時的回調函數定時器

 arg   回調函數傳參程序

 

能夠看到,evtimer_assign默認填充了2個參數:

fd-1,由於定時器不須要fd

type0

因爲超時時間是在下面的event_add中設置,因此這裏也不須要填。

 388行:以上執行結果,跟咱們在osp中使用定時器的方法同樣,先設置定時器,若是想要從新設置定時器,那麼從新event_add。咱們也能夠經過設置定時器事件對象的類型爲EV_PERSIST,使得這個定時器事件成爲一個永久定時器,從而不須要在第88行中,等定時器從新觸發後從新設置。

       修改後的代碼以下:

4libevent對定時器的管理:

       定時器事件存放在mini-heap中(這個mini-heap好像改造過),key值是定時器事件的超時時間。

相關文章
相關標籤/搜索