程序执行结果:

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

(2)98行:evtimer_assign在event.h中定义如下:

再来看看event_assign函数:

ev     要初始化的事件对象

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

fd      文件描述符

type   事件类型

fn     事件触发时的回调函数

arg   回调函数传参

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

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

type为0。

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

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

修改后的代码如下:

(4)libevent对定时器的管理:

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

libevent 定时器示例的更多相关文章

  1. Libevent 定时器

    先摘一点网上的介绍 libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名分布式缓存软件 ...

  2. libevent 定时器timer

    libevent是一个基于事件触发的网络库,memcached底层也是使用libevent库. 总体来说,libevent有下面一些特点和优势:* 事件驱动,高性能:* 轻量级,专注于网络: * 跨平 ...

  3. day 51 js-2 函数,对象,正则 (定时器示例)

    本文转载自cnblogs.liwenzhou-----哪吒博客 先来一个定时器让我们看看函数的效果: <script src="/js/jquery-3.2.1.min.js" ...

  4. libevent 信号示例

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  5. C-Linux_定时器示例使用

    #include <stdlib.h> #include <signal.h> ; static struct itimerval oldtv; struct itimerva ...

  6. boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等

    一.使用同步定时器 这个示例程序通过展示如何在一个定时器执行一个阻塞等待. //makefile #-------------------------------------------------- ...

  7. Unix_Linux系统定时器的应用(案例)

    2014-05-05 Created By BaoXinjian

  8. 在学习JavaScript中用到的示例

    jQuery老师博客 一.定时器示例 功能:让input的文本框,显示时间,并实时更新 逻辑思路: 1.先定义一个函数,用来把当前时间赋值给input.value 2.开始button设置点击事件,并 ...

  9. libevent基础知识

    在线手册 • 官方网站:http://libevent.org/ • 官方手册:http://www.wangafu.net/~nickm/libevent-book/ • 官方下载:http://s ...

随机推荐

  1. yii中的若干问题

    一直觉得”程序猿“是个很细致的工作,就像绣花一样,一不小心缝错一针,就可能是个很大的bug,但是为什么平时看起来大而化之的男同胞们确能在这方面如此care呢?? 以下进入正文,省去华丽丽的词语,这里仅 ...

  2. Java基础——集合框架

    Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...

  3. Windows7:Visual Studio 2008试用版的评估期已经结束解决方法

    Windows7:Visual Studio 2008试用版的评估期已经结束解决方法       以前在Windows2003碰到这个问题时,都是到"控制面板→添加或删除程序"选择 ...

  4. java事务管理

    一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...

  5. C和C++混合编译

    关于extern_C 通常,在C语言的头文件中经常可以看到类似下面这种形式的代码: #ifdef __cplusplus extern "C" { #endif /**** som ...

  6. hadoop-集群管理(1)——配置文件

    1. 配置文件列表如下: [tianyc@Route conf]$ pwd/home/tianyc/hadoop-1.0.4/conf[tianyc@Route conf]$ ll总用量 76-rw- ...

  7. 必须会的SQL语句(八)数据库的完整性约束

    实体完整性 1.建表时定义主键   Create table 表名    (         Sno int identity(1,1),         Sname nvarchar(20),    ...

  8. 【Linux】程序内获取文件系统挂载信息

    Linux shell可通过查看/etc/mtab或者/proc/mounts文件来获取当前文件系统挂载信息,示例: 程序内读取/etc/mtab或者/proc/mounts,解析字符串较为繁琐,可以 ...

  9. VMware vSphere Client的简单使用教程

    1.首先登陆进去ESXI管理   实验VMware VS6.0版本 2新建虚拟机 确认信息 点击完成 2.开启虚拟机 右键打开控制台 加载光驱 选择虚拟机 Ctrl+Alt+delete重启 安装 来 ...

  10. Linux下发包处理

    Linux下发包处理: 1.用top分析工具来查看哪个进程占用的CPU资源比较大  2. 通过命令来查看都是那些端口被占用了   netstat -antp | more  3.在top里面查看到的异 ...