前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >libevent源码深度剖析四 libevent源代码文件组织

libevent源码深度剖析四 libevent源代码文件组织

作者头像
范蠡
发布2018-07-25 16:07:02
9380
发布2018-07-25 16:07:02
举报
文章被收录于专栏:高性能服务器开发

系列目录

(1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本使用场景和事件流程 (4)libevent源码深度剖析四 libevent源代码文件组织 (5)libevent源码深度剖析五 libevent的核心:事件event (6)libevent源码深度剖析六 初见事件处理框架 (7)libevent源码深度剖析七 事件主循环 (8)libevent源码深度剖析八 集成信号处理 (9)libevent源码深度剖析九 集成定时器事件 (10)libevent源码深度剖析十 支持I/O多路复用技术 (11)libevent源码深度剖析十一 时间管理 (12)libevent源码深度剖析十二 让libevent支持多线程 (13)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.hevutil.c:一些辅助功能函数,包括创建socket pair和一些时间操作函数:加、减和比较等。 8)日志 log.hlog.c:log日志函数 9)缓冲区管理 evbuffer.cbuffer.c:libevent对缓冲区的封装; 10)基本数据结构 compat/sys下的两个源文件:queue.h是libevent基本数据结构的实现,包括链表,双向链表,队列等;_libevent_time.h:一些用于时间操作的结构体定义、函数和宏定义; 11)实用网络库 httpevdns:是基于libevent实现的http服务器和异步dns查询库;

3.小结

本节介绍了libevent的组织和分类,下面将会详细介绍libevent的核心部分event结构。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高性能服务器开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.前言
  • 2.源代码组织结构
  • 3.小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档