高级I/O框架库libevent
来源:互联网 发布:淘宝聚划算怎么报名 编辑:程序博客网 时间:2024/06/08 12:24
libevent是基于reactor模式建立的,reactor由四部分构成:
句柄(文件描述符),时间多路分发器(I/O复用函数),
事件处理器(回调函数),reactor
libevent有如下特点:跨平台支持,同一事件源,线程安全;
所以第一步定义libevent实例:
struct event base *base = event_init();
接下来:因为libevent可以监听三种事件:I/O事件,信号事件,定时事件
所以定义事件可以用统一的event_new();
也可以用evsignal_new()/evtimer_new();
如果定义信号事件:
struct event *sig_ev = evsignal_new(base,SIGINT,sig_fun,NULL);
或者 struct event *sig_ev = event_new(base,SIGINT,EV_SIGNAL,sig_fun,NULL);
这里sig_fun是事件处理函数,如果要求不断地响应事件,可以将其设置为永久事件
即就是:EV_SIGNAL|EV_PERSIST;
下来就是注册事件,将事件添加至反应堆里,event_add(sig_ev,NULL);
第四步,事件循环,调用event_base_dispath(base);
之后当事件处理完将事件移除反应堆:event_free(sig_ev);
event_base_free(base);
差不多就是libevent处理事件的全过程。
阅读全文
0 0
- 高级I/O框架库libevent
- 高性能I/O框架库Libevent源码学习
- Linux - 标准I/O库与高级I/O库
- 高级文件I/O
- 高级I/O
- 高级I/O
- 高级文件I/O
- 高级I/O
- 高级I/O函数
- 高级I/O
- APUE------高级I/O
- 高级I/O----sockerpair
- 高级I/O
- 高级I/O
- 高级I/O函数
- 高级I/O函数
- libevent源码分析--I/O事件
- libevent I/O复用超时时间
- 百练_2767:简单密码
- C语言基础
- 简单排序
- win10下安装mysql-5.7.19-winx64
- 一元多项式的相加(单链表的应用)
- 高级I/O框架库libevent
- 0-1背包-动态规划
- 20170704学习笔记
- python中*args **kw表示的是什么
- 20170705学习笔记
- phpstorm配置Xdebug进行调试PHP教程
- 知识总结
- 进程和线程
- A Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run