没有合适的资源?快使用搜索试试~ 我知道了~
libevent源码深度解析

温馨提示
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页未读,继续阅读
资源评论

- kth83842014-06-01还不错的,好像没有十三章哦

hkx1n
- 粉丝: 119
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 浅谈我国医院信息化的现状及发展策略课件(1).ppt
- 机械设计制造及其自动化专业求职信(7篇)(1).doc
- 电子商务在中小企业运营中的应用正文(1).doc
- 大学电子商务专业学生自我鉴定通用8篇(1).doc
- 重庆市财政局-重庆市经济和信息化委员会工业资金管理办法(1).docx
- 互联网+的企业招标采购管理新模式研究(1).docx
- 电子商务服务站项目投资方案(1).doc
- 加密通信协议推广(1)(1).pptx
- 计算机日常维护管理办法(1)(1).doc
- 全国计算机等级考试一级MS-OFFICE上机考试指导(1).doc
- 大棚育苗专用自动化播种设备项目可行性研究报告(2)(1).doc
- 【推荐下载】信息化环境下徐工的创新变革(1).doc
- 互联网影视创业计划书(1)(1).docx
- 浅谈大数据背景下高校网络在线教育的发展途径(1).docx
- 会计实务:海淘网站"避税"时代将终结-(1)(1).doc
- 软件项目管理-指导原则(人-过程-方法技术)(1).docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
