libevent例子:time-test.c
来源:互联网 发布:软件开发文档控制程序 编辑:程序博客网 时间:2024/05/16 14:26
测试时间,代码如下
#include <sys/types.h>#include <event2/event-config.h>#include <sys/stat.h>#include <sys/queue.h>#include <unistd.h>#include <time.h>#include <sys/time.h>#include <fcntl.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <errno.h>#include <event2/event.h>#include <event2/event_struct.h>#include <event2/util.h>struct timeval lasttime;int event_is_persistent;static voidtimeout_cb(evutil_socket_t fd, short event, void *arg){ struct timeval newtime, difference; struct event *timeout = arg; double elapsed; evutil_gettimeofday(&newtime, NULL); evutil_timersub(&newtime, &lasttime, &difference); elapsed = difference.tv_sec + (difference.tv_usec / 1.0e6); printf("timeout_cb called at %d: %.3f seconds elapsed.\n", (int)newtime.tv_sec, elapsed); lasttime = newtime; if (! event_is_persistent) { struct timeval tv; evutil_timerclear(&tv); tv.tv_sec = 2; event_add(timeout, &tv); }}intmain(int argc, char **argv){ struct event timeout; struct timeval tv; struct event_base *base; int flags; if (argc == 2 && !strcmp(argv[1], "-p")) { event_is_persistent = 1; flags = EV_PERSIST; } else { event_is_persistent = 0; flags = 0; } base = event_base_new(); event_assign(&timeout, base, -1, flags, timeout_cb, (void*) &timeout); evutil_timerclear(&tv); tv.tv_sec = 2; event_add(&timeout, &tv); evutil_gettimeofday(&lasttime, NULL); event_base_dispatch(base); return (0);}
比较下结果
[root@dl samples]$ ./a.outtimeout_cb called at 1494850350: 2.002 seconds elapsed.timeout_cb called at 1494850352: 2.002 seconds elapsed.timeout_cb called at 1494850354: 2.002 seconds elapsed.timeout_cb called at 1494850356: 2.002 seconds elapsed.timeout_cb called at 1494850358: 2.002 seconds elapsed.timeout_cb called at 1494850360: 2.002 seconds elapsed.^C[root@dl samples]$ ./a.out -ptimeout_cb called at 1494850365: 2.002 seconds elapsed.timeout_cb called at 1494850367: 2.000 seconds elapsed.timeout_cb called at 1494850369: 2.000 seconds elapsed.timeout_cb called at 1494850371: 2.000 seconds elapsed.timeout_cb called at 1494850373: 2.000 seconds elapsed.timeout_cb called at 1494850375: 1.999 seconds elapsed.timeout_cb called at 1494850377: 2.000 seconds elapsed.timeout_cb called at 1494850379: 2.000 seconds elapsed.timeout_cb called at 1494850381: 2.000 seconds elapsed.
./a.out:不持续触发,手动event_add
./a.out -p:持续触发超时事件
感觉像是测试event_add函数所耗费的时间。
阅读全文
0 0
- libevent例子:time-test.c
- libevent time
- libevent time
- libevent给的例子hello_world.c
- libevent例子
- libevent 例子
- linux c/c++ libevent 定时提醒小小例子
- time例子
- libevent 多线程例子
- libevent入门小例子
- libevent代码例子----定时器
- libevent例子--HTTP 服务器
- libevent helloworld 例子解析
- Libevent的一个例子
- libevent例子:hello-world
- test for time.h
- time test using microtime()
- real time performance test
- Unity JsonToDic
- 1.#QNAN、1.#IND和1.#INF等“无效”浮点数说明及其判断
- JSON介绍
- 寻找最大数
- Smack jar包介绍
- libevent例子:time-test.c
- 新员工入职详细培训计划
- H
- cout.setf(ios_base::fixed,ios_base::floatfield);
- spring Cache 配置和调用过程
- ajax提交表单后,页面仍被刷新
- 《简约至上 交互式设计四策略》
- 如何将本地项目添加到github上
- 有序表的查找