libevent
文章平均质量分 83
录事参军
认真、努力、自强不息
展开
-
libevent源码分析(1)--2.1.8--标志信息
一、事件类型标志 event-internal.h/** * @name event flags * * Flags to pass to event_new(), event_assign(), event_pending(), and * anything else with an argument of the form "short events" *//**@{*/原创 2017-05-26 19:15:58 · 1677 阅读 · 0 评论 -
libevent源码分析(7)--2.1.8--信号事件处理机制分析
一、信号绑定机制 简单来说,就是将外部信号转换为内部IO事件来处理。 由于信号捕捉函数是全局绑定的,所以没办法像IO事件一样,将IO事件和文件描述符绑定在一起,而libevent又需要将IO事件、信号事件、定时事件都采用事件触发机制来实现,那么对于信号事件来说,就需要一层中间中转来实现,将信号事件在通知event_base时转换成IO事件,具体来说,就是在信号绑定时没办原创 2017-05-31 18:55:20 · 2003 阅读 · 0 评论 -
libevent源码分析(9)--2.1.8--事件注册和删除
一、事件注册-event_add1、将事件添加到等待事件中去,需要注意的是,event_add在event_new或者event_assign之后执行,即添加的事件必须是经过基本初始化过后的事件;2、此处添加的事件包括IO事件、信号事件、定时事件,根据事件申请时设置的事件类型决定添加的流程;3、超时控制包括两种方式: (1)最小堆:时间超时时间存储在最小堆,每次执行超时原创 2017-06-02 10:34:50 · 3303 阅读 · 0 评论 -
libevent源码分析(8)--2.1.8--事件申请与释放
一、event_new主要用来创建事件结构体,根据监听事件类型,文件描述符,以及回调函数,回调函数参数等创建/** Allocate and asssign a new event structure, ready to be added. The function event_new() returns a new event that can be used in futu原创 2017-05-31 20:51:57 · 2392 阅读 · 0 评论 -
libevent源码分析(6)--2.1.8--创建和释放libevent句柄event_base的相关函数
一、event_base_new函数:创建默认的event_base** * Create and return a new event_base to use with the rest of Libevent. * * @return a new event_base on success, or NULL on failure. * * @see event_base_free原创 2017-05-31 11:10:58 · 1971 阅读 · 0 评论 -
libevent源码分析(5)--2.1.8--libevent配置信息对象struct event_config的申请和释放函数分析
一、配置对象申请配置申请是创建event_config对象并赋初值,下面看一下源码/** Allocates a new event configuration object. The event configuration object can be used to change the behavior of an event base. @return an原创 2017-05-26 19:45:06 · 1152 阅读 · 1 评论 -
libevent源码分析(4)--2.1.8--结构体struct event_config
一、event_entry结构体struct event_config_entry { // 下一个屏蔽的后台方法名 TAILQ_ENTRY(event_config_entry) next; // 屏蔽的后台方法名 const char *avoid_method;};二、event_config结构体** Internal st原创 2017-05-26 19:35:38 · 1244 阅读 · 0 评论 -
libevent源码分析(3)--2.1.8--结构体struct event_base和struct eventop
一、struct eventop结构体struct eventop { /** The name of this backend. */ // 后台方法名字,即epoll,select,poll等 const char *name; /** Function to set up an event_base to use this backend. It s原创 2017-05-26 19:25:18 · 1657 阅读 · 0 评论 -
libevent源码分析(2)--2.1.8--结构体 struct event和struct event_callback
struct event_callback { //下一个回调事件 TAILQ_ENTRY(event_callback) evcb_active_next; //回调事件的状态标识,具体为: // #define EVLIST_TIMEOUT 0x01 // event在time堆中,min_heap //原创 2017-05-26 19:18:05 · 2167 阅读 · 0 评论 -
libevent源码分析(10)--2.1.8--事件激活
一、event_base_loop此函数主要运行激活事件;它会根据配置中的参数来确定是否需要在执行激活事件过程中中断执行并检查新事件以及检查频率;同时也会根据事件类型执行不同的回调函数,并且决定是否将事件重新添加到队列中;/** Wait for events to become active, and run their callbacks. This is a more f原创 2017-06-14 22:17:27 · 1895 阅读 · 2 评论