没有合适的资源?快使用搜索试试~ 我知道了~
libevent源码分析
5星 · 超过95%的资源 需积分: 9 71 下载量 197 浏览量
2010-08-28
00:53:55
上传
评论
收藏 724KB PDF 举报
温馨提示
详细介绍了libevent内部框架,处理机制等,及相关的源码剖析。
资源推荐
资源详情
资源评论
libevent 源码深度剖析
张亮
Email: sparling.liang@hotmail.com
1
回想刚开始写时,就冠以“深度剖析”的名称,也是为了给自己一些压力,以期能写好
这一系列文章,对 libevent 源代码的各方面作详细的分析;现在看来也算是达到了最初的目
的。希望能给学习和使用 libevent 的朋友们有所帮助。
Email:sparkling.liang@hotmail.com
张亮
2
目录
libevent源码深度剖析......................................................................................................................1
目录 ..................................................................................................................................................3
一 序幕.............................................................................................................................................5
1 前言...............................................................................................................................5
2 Libevent简介 .................................................................................................................5
3 学习的好处...................................................................................................................5
二Reactor模式 ..................................................................................................................................6
1 Reactor的事件处理机制 ...............................................................................................6
2 Reactor模式的优点 .......................................................................................................6
3 Reactor模式框架 ...........................................................................................................6
4 Reactor事件处理流程 ...................................................................................................8
5 小结...............................................................................................................................9
三 基本使用场景和事件流程.......................................................................................................10
1 前言.............................................................................................................................10
2 基本应用场景.............................................................................................................10
3 实例代码.....................................................................................................................11
4 事件处理流程.............................................................................................................11
5 小结.............................................................................................................................12
四 libevent源代码文件组织..........................................................................................................13
1 前言.............................................................................................................................13
2 源代码组织结构.........................................................................................................13
3 小结.............................................................................................................................14
五 libevent的核心:事件event.....................................................................................................15
1 libevent的核心-event...................................................................................................15
2 libevent对event的管理 ................................................................................................16
3 事件设置的接口函数.................................................................................................17
4 小结.............................................................................................................................18
六 初见事件处理框架...................................................................................................................19
1 事件处理框架-event_base..........................................................................................19
2 创建和初始化event_base...........................................................................................20
3 接口函数.....................................................................................................................20
4 小节.............................................................................................................................23
七 事件主循环...............................................................................................................................24
1 阶段性的胜利.............................................................................................................24
2 事件处理主循环.........................................................................................................24
3 I/O和Timer事件的统一...............................................................................................27
4 I/O和Signal事件的统一 ..............................................................................................27
5 小节.............................................................................................................................27
八 集成信号处理...........................................................................................................................28
1 集成策略——使用socket pair ...................................................................................28
3
2 集成到事件主循环——通知event_base...................................................................29
4 evsignal_info结构体....................................................................................................30
5 注册、注销signal事件 ...............................................................................................30
5 小节.............................................................................................................................31
九 集成定时器事件.......................................................................................................................32
1 集成到事件主循环.....................................................................................................32
2 Timer小根堆 ................................................................................................................33
3 小节.............................................................................................................................34
十 支持I/O多路复用技术 .............................................................................................................35
1 统一的关键.................................................................................................................35
2 设置I/O demultiplex机制 ...........................................................................................35
3 小节.............................................................................................................................37
十一 时间管理...............................................................................................................................38
1 初始化检测.................................................................................................................38
2 时间缓存.....................................................................................................................38
3 时间校正.....................................................................................................................40
4 小节.............................................................................................................................41
十二 让libevent支持多线程..........................................................................................................42
1 错误使用示例.............................................................................................................42
2 支持多线程的几种模式.............................................................................................42
3 例子——memcached..................................................................................................43
4 小节.............................................................................................................................44
4
一 序幕
1 前言
Libevent 是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不
少。写这一系列文章的用意在于,一则分享心得;二则对 libevent 代码和设计思想做系统的、
更深层次的分析,写出来,也可供后来者参考。
附带一句:Libevent 是用 c 语言编写的(MS 大牛们都偏爱 c 语言哪),而且几乎是无处
不函数指针,学习其源代码也需要相当的 c 语言基础。
2 Libevent 简介
上来当然要先夸奖啦,Libevent 有几个显著的亮点:
事件驱动(event-driven),高性能;
轻量级,专注于网络,不如 ACE 那么臃肿庞大;
源代码相当精炼、易读;
跨平台,支持 Windows、Linux、*BSD 和 Mac Os;
支持多种 I/O 多路复用技术, epoll、poll、dev/poll、select 和 kqueue 等;
支持 I/O,定时器和信号等事件;
注册事件优先级;
Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、Vom i t、Nylon、Netchat
等等。
Libevent 当前的最新稳定版是 1.4.13;这也是本文参照的版本。
3 学习的好处
学习 libevent 有助于提升程序设计功力,除了网络程序设计方面外,Libevent 的代码里
有很多有用的设计技巧和基础数据结构,比如信息隐藏、函数指针、c 语言的多态支持、链
表和堆等等,都有助于提升自身的程序功力。
程序设计不止要了解框架,很多细节之处恰恰也是事关整个系统成败的关键。只对
libevent 本身的框架大概了解,那或许仅仅是一知半解,不深入代码分析,就难以了解其设
计的精巧之处,也就难以为自己所用。
事实上 Libevent 本身就是一个典型的 Reactor 模型,理解 Reactor 模式是理解 libevent
的基石;因此下一节将介绍典型的事件驱动设计模式——Reactor 模式。
参考资料:
Libevent:
http://monkey.org/~provos/libevent/
5
剩余43页未读,继续阅读
资源评论
- yimingjie2012-06-13这个完全 http://blog.csdn.net/sparkliang/article/category/660506 中的内容
- johnelf2012-02-09深入浅出的讲解了libevent的原理
zcx123456789
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 职工安全教育培训档案.docx
- 职业技术学院差旅费审批表.docx
- 职业技术学院教学事故责任认定申诉表.doc
- 职业技术学院取消学生考试资格审批表.docx
- 职业学院年招生政治考察表.doc
- 质保金到期付款证明.docx
- 智慧教室使用审批单.doc
- 中等职业学校专业课教师面试测试标准.doc
- 重大事项和重点工作实施单位监督记录表.docx
- 专业教学计划调整申请表.docx
- 专业核心课程设置表.docx
- 势能法求解含齿根裂纹的直齿轮时变啮合刚度,根据Wu文献并结合其它文献采用MATLAB编写的含齿根裂纹的时变啮合刚度程序,同时考虑了齿轮变位情况 另有考虑双齿啮合时,齿基刚度重复计算的修正程序 如有
- 直流无刷电机控制(FOC):速度闭环模式 直流无刷电机控制(FOC):电流模式 直流无刷电机控制(FOC):位置模式
- 工业互联网试题及答案 单选
- 基于 TransUnet 对房屋建筑图纸图像语义的分割实战【包含代码+数据集,一键运行】
- 西门子 博途 通讯库,可以通过标签寻址 可以用于C++,.Net及Labview开发的上位机 产品亮点 支持控制器类型S7-200, S7-1200, S7-1500, S7-300, S7-400
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功