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值是定时器事件的超时时间。

相关文章
相关标签/搜索