一、前言

详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!

二、源代码组织结构

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 / 源代码文件组织相关推荐

  1. libevent 源码分析丨libevent组件构成以及编程要领

    1,前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少.写这一系列文章的用意在于,一则分享心得:二则对libevent代码和设计思想做系统的.更深层次的分析, ...

  2. libevent源码深度剖析四

    libevent源码深度剖析四 --libevent源代码文件组织 1 前言 详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的.本节内容不多,我想并不 ...

  3. 牛客网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/ ...

  4. 如何正确使用计算机提纲,计算机系统操作论文大纲格式 计算机系统操作论文提纲如何写...

    为论文写作提供[100个]计算机系统操作论文大纲格式,海量计算机系统操作相关论文提纲,包括专科与本科以及硕士论文提纲,解决您的计算机系统操作论文提纲如何写的相关难题! 五.基于ARM的嵌入式Linux ...

  5. [知行]Java题库

    文章目录 励志 刷题指南 八月刷题录 1.Java引用传递与值传递 2.Java的4类流程控制语句 3.Java中的四类八种基本数据类型 4.静态变量 5.super 6. 数据类型取值范围 7.Se ...

  6. Ubuntu20.04重装系统+常用软件安装

    1.Ubuntu20.04重装系统 Y7000P 双系统安装ubuntu18.04和ubuntu20.04均出现错误,ubuntu16.04成功. 固态硬盘已经确认gpt模式并且全盘格式话,多次测试重 ...

  7. memcached完全剖析–1. memcached的基础

    2019独角兽企业重金招聘Python工程师标准>>> 本文转自:http://blog.charlee.li/memcached-001/ memcached是什么? memcac ...

  8. 计算机原理课程设计 第二版pdf,计算机组成原理课程设计二.pdf

    计算机组成原理设计文档 目 录 实验简介 实验原理 ------------------------ 2 设计原理 ------------------------ 3 实验设备 ---------- ...

  9. memcached搭建缓存系统

    概念 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能. 适用场合 分布式应用.由于memcac ...

最新文章

  1. react单选框获取值
  2. mySQL5.5服务配置_配置mysql5.5主从服务器(转)
  3. lucene DocValues——没有看懂
  4. 脚本编程语言python语言-python算的上脚本语言吗
  5. WebSocket学习与使用
  6. .net中javascript去调用webservice
  7. PHP读取数据库并按照中文名称进行排序实现代码
  8. LINUX关于休眠、待机和睡眠的问题
  9. Qt信号和槽的连接--发射信号而槽未响应
  10. npm,yarn对比
  11. hdu acm 1540
  12. Linux重定向和管道的基础学习
  13. 6.27java斗地主
  14. win10安装solidworks2016注册机闪退的问题
  15. 结合MACD看现货白银价格走势图
  16. Context-Aware Zero-Shot Recognition 论文翻译
  17. 苹果iPhone白屏死机?如何修复?
  18. C#毕业设计——基于C#+asp.net+FTP的FTP客户端设计与实现(毕业论文+程序源码)——FTP客户端
  19. 输入多组字符数组c语言,c语言怎样能连续输入多个一维数组
  20. “资产证券化支持实体经济万里行”启幕 探索实体经济发展新态势

热门文章

  1. DOS命令大全(一)
  2. oracle表空间和用户的创建、修改、授权、查看等执行SQL
  3. Google邮局可以实时开通了
  4. 清华镜像:zookeeper
  5. gorm配置logger显示执行的sql
  6. golang的基本数据类型和数组默认都是值传递的
  7. 【收藏】win10利用WSL2安装docker的2种方式
  8. ansible roles角色案例:实现httpd角色
  9. 编写Dockerfile增强centos镜像:安装vim 和net-tools
  10. Linux du指令