libevent是一个轻量级的开源库,用于在应用程序中提供事件通知和事件驱动的异步网络编程,主要处理输入/输出、定时器和信号等事件。主打高性能,本篇文章算是源码阅读的开始,先整体看下源码结构。 2. 源码结构介绍 build/: 包含构建系统文件和脚本,用于帮助编译和安装 libevent。cmake/: 包含 CMake 构建系统配置文件,...
libevent源码分析 libevent源码深度剖析 张亮 Email: sparling.liang@hotmail.com 1
1 struct event ev; 2 struct timeval tv; 3 void time_cb(int fd, short event, void *argc) 4 { 5 printf("timer wakeup/n"); 6 event_add(&ev, &tv); // reschedule timer 7 } 8 int main() 9 { 10 struct event_base *base = event_init(); 11 tv.tv_sec = 10; // 10s period...
Libevent 的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、libevent 框架、对系统 I/O 多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据结构和基于 libevent的两个实用库等几个部分,有些部分可能就是一个源文件。 (1)...
libevent源码分析(一) 分析libevent的源代码,我的想法的是先分析各种结构体,struct event_base、struct event,然后是event_base_new函数、event_new函数、event_add函数,最后分析event_base_dispatch函数。 一、各种结构体 1、event_base 1structevent_base {2/** Function pointers and other data to describe ...
Libevent 2.0.20源码分析-event、eventop结构体分析,Libevent实例:这段代码描述了Libevent库的主要逻辑:调用event_init函数创建event_base对象。一个event_base相当于一个Reator实例。
1.libevent源代码获取 最新代码直接从libevent的github即可,链接如下: https://github.com/libevent/libevent 编译方法在该github介绍页说的很详细了,这里不再多说。 2.libevent源代码的目录结构 我们下载下来源代码以后,看到有很多文件,很多目录,往往不知道从何入手,我一开始也是这样,后来我花时间把每个目录和一些...
分析libevent的源代码,我的想法的是先分析各种结构体,struct event_base、struct event,然后是event_base_new函数、event_new函数、event_add函数,最后分析event_base_dispatch函数。 一、各种结构体 1、event_base 1 struct event_base { 2 /** Function pointers and other data to describe this event_base'...
libevent 的缓冲区结构叫 evbuffer,下图是 evbuffer 的大致结构。这里取出了一些细节,只保留结构轮廓。 evbuffer 并不像 std::vector 一样是一块连续的内存空间,而是由一个个容纳数据的内存块通过链表组织起来的。链表每个节点存储实际的数据,结构其其它信息记录了数据的长度,节点的容量等信息。这里 off 这个变量名...
这两天没事,看了一下Memcached和libevent的源码,做个小总结。 1、入门 1.1、概述 Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库。Libevent有几个显著的亮点: (1)事件驱动(event-driven),高性能; (2)轻量级,专注于网络,不如 ACE 那么臃肿庞大; ...