![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
libevent源码剖析
文章平均质量分 72
hello_bravo_
这个作者很懒,什么都没留下…
展开
-
整体框架
libevent代码分类头文件内部使用的头文件辅助功能函数日志libevent框架对系统I/O多路复用机制的封装信号管理定时事件管理缓冲区管理基本数据结构基于libevent的两个实用库1)头文件event.h:时间宏定义,主要结构体event声明,接口函数声明2)内部头文件xxx-internal.h:事件宏定义,接口函原创 2016-09-20 21:37:23 · 523 阅读 · 0 评论 -
libevent中的event结构体
libevent基于事件驱动,event是他整个库的核心event的作用:相当于Reactor框架中的事件处理程序组件,它提供了函数接口,供Reactor在事件发生时调用,以执行相应的事件处理,通常他会绑定一个有效的句柄struct event { TAILQ_ENTRY (event) (ev_active_next); TAILQ_ENTRY (event) (ev_next);原创 2016-09-24 22:20:04 · 1018 阅读 · 0 评论 -
事件处理框架-event_base
分析libevent的事件处理框架event_base和libevent注册,删除事件的具体流程,这就表现为event_base结构体.由于源代码的event_base定义的变量太多就先放上书中精简过的有价值的struct event_base{const struct eventop* evsel;void* evbase;int event_count;int event_gotterm原创 2016-09-25 16:15:22 · 548 阅读 · 0 评论 -
libevent源码剖析-事件主循环
事件主循环主要是通过event_base_loop()函数完成的 event_base_loop所执行的循环 开始 第一步:(校正系统时间)第二步:(根据timer heap的最小超时时间计算系统I/O多路复用的最大等待时间)第三步:(更新last waittime,并清空time cache)第四步:(调用系统I/O 多路复用等待就绪I/O events)第五步:(检查signal的激活标记原创 2016-09-27 15:45:30 · 939 阅读 · 0 评论 -
libevent的集成信号处理
本节主要介绍libevent对signal事件的具体处理框架,包括事件注册,删除和socket pair通知机制,以及是如何将Signal事件集成到事件主循环之中的。 1.继承策略–使用socket pair Socket pair就是一个socket对,包含两个socket,一个读socket,一个写socket。 工作方式: 线程A-> W -> Write socket(经由Socke原创 2016-09-29 10:57:26 · 562 阅读 · 0 评论 -
Reactor模式,两种高效的并发模式
Reactor释义"反应堆",是一种事件驱动机制,和普通函数调用的不同之处在于,Reactor逆置了事件处理流程,应用程序需要提供相应接口并注册到Reactor上,如果相应的时间发生,Reactor将主动调用应用程序注册的接口,这些接口又称为“回调函数”。Reactor简单的描述,就是当一件事情到时间了,那么他会自动执行。Reactor模式的优点:(1)响应快,不必为单原创 2016-09-20 21:10:55 · 3735 阅读 · 0 评论