libevent 定时器示例

摘要:
程序执行结果:每隔2秒,触发一次定时器。我们也可以通过设置定时器事件对象的类型为EV_PERSIST,使得这个定时器事件成为一个永久定时器,从而不需要在第88行中,等定时器重新触发后重新设置。修改后的代码如下:libevent对定时器的管理:定时器事件存放在mini-heap中,key值是定时器事件的超时时间。

libevent 定时器示例第1张

程序执行结果:

libevent 定时器示例第2张

每隔2秒,触发一次定时器。

298行:evtimer_assignevent.h中定义如下:

libevent 定时器示例第3张

再来看看event_assign函数:

libevent 定时器示例第4张

ev 要初始化的事件对象

base 事件对象要指定到哪个even_base上

fd 文件描述符

type 事件类型

fn 事件触发时的回调函数

arg 回调函数传参

可以看到,evtimer_assign默认填充了2个参数:

fd-1,因为定时器不需要fd

type0

由于超时时间是在下面的event_add中设置,所以这里也不需要填。

388行:以上执行结果,跟我们在osp中使用定时器的方法一样,先设置定时器,如果想要重新设置定时器,那么重新event_add。我们也可以通过设置定时器事件对象的类型为EV_PERSIST,使得这个定时器事件成为一个永久定时器,从而不需要在第88行中,等定时器重新触发后重新设置。

修改后的代码如下:

libevent 定时器示例第5张

4libevent对定时器的管理:

定时器事件存放在mini-heap中(这个mini-heap好像改造过),key值是定时器事件的超时时间。

免责声明:文章转载自《libevent 定时器示例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇TrinityCore3.3.5编译过程-官方指导-踩坑总结MyBatis:resultMap详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

windows下编译libevent(2.1.8)及使用

一:获取libevent github地址:https://github.com/libevent/libevent/releases 下载2.1.8稳定版 二:编译libevent 我是用的visual studio 2010,当然也可以使用更高的版本 启动后,进入"Libevent-release-2.1.8-stable"所在的目录 直接执行会报...

8052定时器2的用法

学了51单片机之后,开发板上的CPU是STC89S52RC的,就是说52单片机,里面比51的多了一个定时器2看了很多书,就是没怎么理解,于是乎决定看AT89S52的数据手册,翻译一遍,可能会加深自己的理解,以后对C8051F的单片机也好好预热一下。 定时计数器2是一个16位定时/计数器,通过T2CON寄存器的C/T2位可以选择定时还是计数功能。定时器2 有...

【单片机】【710】定时器

现在开始看710,我觉得看一个单片机还是先从定时器、振荡器、中断和器件配置这些基础的部分入手。 首先最应该知道的内容就是定时器如果选择了系统时钟,且分频比为1,则F = 1/40Mhz,每0.025us定时器的累加器加一 710的定时器分了3类,大概是有点多才分了类吧,它有9个定时模块 A类:Timer1 B类:Timer2、4、6、8 C类:Timer3...

ucos(八)软件定时器

一、概述   内核提供了一个模拟定时器的机制,类似于任务,但是占用资源少,只能做一些简单的定时控制,如可以定时的喂狗、控灯。在软件定时器,不能添加时间管理函数、阻塞等待函数(等待互斥锁/信号量/事件标志组/消息队列)。 1.创建软件定时器 void OSTmrCreate (OS_TMR *p_tmr, CPU_CHAR *p_name, OS_TIC...

[RTOS]--uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点

本篇博客就来细数这几个RTOS的特点。   以下内容均来自官方网站或者官方手册Feature的Google翻译的加了我的一些调整,没有任何主观成分。 1. FreeRTOS   FreeRTOS是专为小型嵌入式系统设计的可扩展的实时内核。 亮点包括: 微小的封装形式。 免费的RTOS调度程序 免费嵌入式软件源代码。 免版税。 抢占式,协作式和混合配置...

AVR单片机教程——走向高层

本文隶属于AVR单片机教程系列。   在系列教程的最后一篇中,我将向你推荐3个可以深造的方向:C++、事件驱动、RTOS。掌握这些技术可以帮助你更快、更好地开发更大的项目。 本文涉及到许多概念性的内容,如果你有不同意见,欢迎讨论。 关于高层 这一篇教程叫作“走向高层”。什么是高层? 我认为,如果寥寥几行代码就能实现一个复杂功能,或者一行代码可以对应到几百句...