- 浏览: 14435 次
最新评论
libevent源码深度剖析四
2011年12月19日
libevent源码深度剖析四
――libevent源代码文件组织
1 前言
详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!
2 源代码组织结构
Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、 libevent框架、对系统I/O多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据结构和基于libevent的两个实用库等几个部分,有些部分可能就是一个源文件。
源代码中的test部分就不在我们关注的范畴了。
1)头文件
主要就是event.h:事件宏定义、接口函数声明,主要结构体event的声明;
2)内部头文件
xxx-internal.h:内部数据结构和函数,对外不可见,以达到信息隐藏的目的;
3)libevent框架
event.c:event整体框架的代码实现;
4)对系统I/O多路复用机制的封装
epoll.c:对epoll的封装;
select.c:对select的封装;
devpoll.c:对dev/poll的封装;
kqueue.c:对kqueue的封装;
5)定时事件管理
min-heap.h:其实就是一个以时间作为key的小根堆结构;
6)信号管理
signal.c:对信号事件的处理;
7)辅助功能函数
evutil.h 和evutil.c:一些辅助功能函数,包括创建socket pair和一些时间操作函数:加、减和比较等。
8)日志
log.h和log.c:log日志函数
9)缓冲区管理
evbuffer.c和buffer.c:libevent对缓冲区的封装;
10)基本数据结构
compat/sys下的两个源文件:queue.h是libevent基本数据结构的实现,包括链表,双向链表,队列等;_libevent_time.h:一些用于时间操作的结构体定义、函数和宏定义;
11)实用网络库
http和evdns:是基于libevent实现的http服务器和异步dns查询库;
3 小结
本节介绍了libevent的组织和分类,下面将会详细介绍libevent的核心部分event结构。
发表评论
-
TCP长连接服务的Java实现
2012-01-20 00:49 1503TCP长连接服务的Java实现 ... -
Java 开发员AJAX 常见问题
2012-01-20 00:49 600Java 开发员AJAX 常见问题 ... -
Android IPC进程间通讯机制
2012-01-20 00:49 747Android IPC进程间通讯机制 2011年06月17日 ... -
说说IO - IO的分层
2012-01-20 00:49 673说说IO - IO的分层 2011年 ... -
使用 libevent 和 libev 提高网络应用性能
2012-01-20 00:49 1449使用 libevent 和 libev 提 ... -
i9001
2012-01-17 01:07 754i9001 2011年12月13日 一、外观检查,外壳、 ... -
从零开始- Android刷机指南<一>
2012-01-17 01:07 749从零开始- Android刷机指南 2011年07月27日 ... -
接上一篇
2012-01-17 01:07 653接上一篇 2011年04月25日 第 2 章 路由器基 ... -
ARM经典100问
2012-01-17 01:07 809ARM经典100问 2011年03月13日 第1章 体系 ... -
valgrind结果查看
2012-01-15 19:48 520valgrind结果查看 2011年12月30日 程序示 ... -
给大学生学习ARM和FPGA的建议(转)
2012-01-15 19:48 614给大学生学习ARM和FPGA的 ... -
教大家S40/java所有玩机技巧,喜欢请转载 加QQ657752021学习更多技术
2012-01-15 19:48 858教大家S40/java所有玩机 ... -
【下一页】linux(部分)
2012-01-15 19:48 714【下一页】linux(部分) 2012年01月09日 一 ... -
第2章 saas 成熟度模型-悟空悟道-iteye技术网站
2012-01-11 12:02 536第2章 saas 成熟度模型-悟空悟道-iteye技术网站 ... -
使用 JavaScript 获取 table 行号和列号
2012-01-11 12:02 798使用 JavaScript 获取 table 行号和列号 2 ... -
Extending Ext
2012-01-11 12:02 603Extending Ext 2011年07月01日 fr ... -
ReflectionUtils
2012-01-11 12:02 677ReflectionUtils 2011年07月01日 ... -
JPA中复合主键的映射
2012-01-11 12:01 548JPA中复合主键的映射 2011年07月01日 在航空系 ...
相关推荐
libevent源码深度剖析 libevent源码深度剖析 libevent源码深度剖析 libevent源码深度剖析 libevent源码深度剖析
libevent库,文字版,很清晰,附带libevent参考手册(中文版) libevent源码深度剖析,根据libevent开源代码框架进行剖析,很不错值得学习借鉴,还有libevent中C语言的功底值得学习揣摩!
为方便阅读,把blog上的libevent源码深度剖析系列文章整合成一个pdf。
libevent参考手册(中文版) + libevent源码深度剖析 zszszs
libevent 源码深度剖析.pdf libevent 源码 深度 剖析 pdf
libevent源码深度剖析:主要介绍libevent框架,以及重要流程.
作者连接为http://blog.csdn.net/luotuo44/article/category/2435521/2 本人为方便今后的学习和记录,将网页内容复制做成PDF文档,希望作者不要介意
libevent资源合集,包括libevnet深入浅出,文字版PDF。libevent参考手册,文字版PDF。libevent源码深度剖析,文字版PDF。基于libevent打车移动解决方案,libevent实战项目。学习libevent可以下载参考学习。
Libevent源码解析.pdf
深入学习linevent
详细了解网络编程底层核心内容,了解内部机制及原理
文件为参考《libevent中文参考手册》以及《libevent源码深度剖析》(张亮)总结的libevent的学习资料。
1.前言详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!2. 源代码组织
自己学完之后有很大提高,希望能帮到大家
1. 初始化检测 2. 时间缓存 3. 时间校正 4. 小节
1. 统一的关键 2. 设置I/O demultiplex机制 3. 小节