- 1
- 2
- 3
- 4
- 5
libevent源码导读从一张文件地图开始.docx
资料介绍
libevent 源码导读:从一张文件地图开始
为什么值得啃一遍 libevent
做 Linux 网络编程的人,迟早会遇上 libevent。这个库不大,却承载了 Redis、memcached、Tor 等一大票知名项目的底层事件循环。它封装了各平台的 IO 复用接口,对外提供统一的事件回调模型,是理解 Reactor 模式和事件驱动编程的最佳入门材料。
很多人拿起源码就晕,因为文件多、宏多、结构体层层嵌套。其实 libevent 的组织非常有条理,只要先建立一张"文件地图",知道每个文件负责什么,再顺着事件循环这条主线往下读,就会发现它的设计其实相当清晰。
一、先看整体架构
libevent 采用的是"后端可插拔 + 统一调度层"的架构。所谓后端,就是各平台的 IO 多路复用实现;统一调度层,则是事件循环的核心。
这套架构分三层。最下层是系统后端,封装 epoll、kqueue、select、poll 这些系统调用,对外提供统一的接口。中间是核心引擎,以 event_base 为中心,管理事件、定时器、激活队列。最上层是应用接口,提供 event、bufferevent 等给用户使用。
理解了这三层,再去看源码,就有了一个框架性的认识。
二、核心文件都干些什么
libevent 的源码目录里,有几个文件是必须读的,它们构成了整个库的骨架。
event.c 是绝对的核心。事件循环主循环、事件注册与激活、优先级队列调度,全在这里。读懂了 event.c,就读懂了 libevent 一半。
event-internal.h 定义了内部结构体。event_base 的完整结构、事件队列的组织方式,都在这。读源码时遇到不认识的字段,回这里查。
部分文件列表
| 文件名 | 大小 |
| libevent源码导读从一张文件地图开始.docx | 38K |
最新上传
-
zhongshaoxiong 打赏3.00元 3天前
-
他山之石可攻玉 打赏60.00元 3天前
用户:烟雨
-
江岚 打赏210.00元 3天前
用户:潇潇江南
-
江岚 打赏100.00元 3天前
-
21ic下载 打赏310.00元 3天前
用户:gsy幸运
-
21ic下载 打赏310.00元 3天前
用户:zhengdai
-
21ic下载 打赏310.00元 3天前
用户:江岚
-
21ic下载 打赏210.00元 3天前
用户:潇潇江南
-
21ic下载 打赏60.00元 3天前
用户:他山之石可攻玉
-
21ic下载 打赏60.00元 3天前
用户:烟雨
-
21ic下载 打赏60.00元 3天前
用户:w178191520
-
21ic下载 打赏60.00元 3天前
用户:w993263495
-
21ic下载 打赏110.00元 3天前
用户:xzxbybd
-
21ic下载 打赏60.00元 3天前
用户:zq_1943
-
21ic下载 打赏20.00元 3天前
用户:kk1957135547
-
21ic下载 打赏20.00元 3天前
用户:sun2152
-
21ic下载 打赏20.00元 3天前
用户:铁蛋锅
-
21ic下载 打赏20.00元 3天前
用户:xuzhen1
-
21ic下载 打赏20.00元 3天前
用户:w1966891335
-
21ic下载 打赏35.00元 3天前
用户:有理想666
-
21ic下载 打赏15.00元 3天前
用户:nuaanuaa111
-
21ic下载 打赏20.00元 3天前
用户:liqiang9090
-
21ic下载 打赏15.00元 3天前
用户:ningmengge
-
21ic下载 打赏10.00元 3天前
用户:mulanhk
-
21ic下载 打赏5.00元 3天前
用户:asys
-
21ic下载 打赏10.00元 3天前
用户:舞蹈荀彧
-
21ic小能手 打赏5.00元 3天前
资料:磁编码器开源方案
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏50.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
tangyu1 打赏1.00元 3天前
-
jjjjkkkkk 打赏1.00元 3天前




全部评论(0)