libevent 1.4.13 / 源代码文件组织
一、前言
详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!
二、源代码组织结构
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 查询库。
转载于:https://blog.csdn.net/jcjx0315/article/details/79693484
(SAW:Game Over)
libevent 1.4.13 / 源代码文件组织相关推荐
- libevent 源码分析丨libevent组件构成以及编程要领
1,前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少.写这一系列文章的用意在于,一则分享心得:二则对libevent代码和设计思想做系统的.更深层次的分析, ...
- libevent源码深度剖析四
libevent源码深度剖析四 --libevent源代码文件组织 1 前言 详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的.本节内容不多,我想并不 ...
- 牛客网Java选择题练习
牛客网Java选择题练习 2021/1/12 2021/1/13 2021/1/14 2021/1/16 2021/1/17 2021/1/18 2021/1/20 2021/1/21 2021/1/ ...
- 如何正确使用计算机提纲,计算机系统操作论文大纲格式 计算机系统操作论文提纲如何写...
为论文写作提供[100个]计算机系统操作论文大纲格式,海量计算机系统操作相关论文提纲,包括专科与本科以及硕士论文提纲,解决您的计算机系统操作论文提纲如何写的相关难题! 五.基于ARM的嵌入式Linux ...
- [知行]Java题库
文章目录 励志 刷题指南 八月刷题录 1.Java引用传递与值传递 2.Java的4类流程控制语句 3.Java中的四类八种基本数据类型 4.静态变量 5.super 6. 数据类型取值范围 7.Se ...
- Ubuntu20.04重装系统+常用软件安装
1.Ubuntu20.04重装系统 Y7000P 双系统安装ubuntu18.04和ubuntu20.04均出现错误,ubuntu16.04成功. 固态硬盘已经确认gpt模式并且全盘格式话,多次测试重 ...
- memcached完全剖析–1. memcached的基础
2019独角兽企业重金招聘Python工程师标准>>> 本文转自:http://blog.charlee.li/memcached-001/ memcached是什么? memcac ...
- 计算机原理课程设计 第二版pdf,计算机组成原理课程设计二.pdf
计算机组成原理设计文档 目 录 实验简介 实验原理 ------------------------ 2 设计原理 ------------------------ 3 实验设备 ---------- ...
- memcached搭建缓存系统
概念 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能. 适用场合 分布式应用.由于memcac ...
最新文章
- react单选框获取值
- mySQL5.5服务配置_配置mysql5.5主从服务器(转)
- lucene DocValues——没有看懂
- 脚本编程语言python语言-python算的上脚本语言吗
- WebSocket学习与使用
- .net中javascript去调用webservice
- PHP读取数据库并按照中文名称进行排序实现代码
- LINUX关于休眠、待机和睡眠的问题
- Qt信号和槽的连接--发射信号而槽未响应
- npm,yarn对比
- hdu acm 1540
- Linux重定向和管道的基础学习
- 6.27java斗地主
- win10安装solidworks2016注册机闪退的问题
- 结合MACD看现货白银价格走势图
- Context-Aware Zero-Shot Recognition 论文翻译
- 苹果iPhone白屏死机?如何修复?
- C#毕业设计——基于C#+asp.net+FTP的FTP客户端设计与实现(毕业论文+程序源码)——FTP客户端
- 输入多组字符数组c语言,c语言怎样能连续输入多个一维数组
- “资产证券化支持实体经济万里行”启幕 探索实体经济发展新态势