
libevent
文章平均质量分 79
jackywgw
这个作者很懒,什么都没留下…
展开
-
Libevent学习-----Reactor的事件处理机制
1. 普通函数的调用机制: 主程序调用某函数à函数执行,保存入参和返回寄存器地址,主程序等待à 函数处理完将结果和控制权返回给主程序 à主程序继续执行void func (){ return;}int main(int argc, char *argv[]){ int a,b;原创 2017-06-06 16:18:16 · 470 阅读 · 0 评论 -
libevent 学习----------尾队列 tail queue
libevent里面的尾队列TAILQ 一、TAILQ的队列头 TAILQ把整个队列头单独抽象为一个结构体TAILQ_HEAD,如下:#ifndef TAILQ_HEAD#define TAILQ_HEAD(name, type) \struct name {原创 2017-05-22 15:17:17 · 1598 阅读 · 1 评论 -
Libevent 学习--------(eventop)事件多路分发器
一、事件多路分发器一般使用I/O复用接口。 Libvent中使用eventop 结构作为后端I/O复用的统一接口/** Structure to define the backend of a given event_base. */struct eventop {原创 2017-06-07 16:03:53 · 1983 阅读 · 0 评论 -
libevent 事件的优先级队列
多个事件同时触发时,libevent每一定义各个回调函数的执行顺序。可以使用优先级来定义某些事件比其它事件更重要。libevent里面的优先级队列就是active队列数组,当epoll返回event时,根据event对应的优先级放入队列的active数组列表中,实现了优先级的概念 1. event_Base的优先级队列libevent中,每个event_base都有与之相关的一个或者多个优先级。原创 2017-09-26 15:51:58 · 2076 阅读 · 0 评论 -
Libevent学习----信号事件
信号是一种异步事件:信号处理函数和程序的主循环是两条不同的执行路线。很明显,信号处理函数需要尽可能快地执行完毕,以确保该信号不被屏蔽太久(信号在处理期间,系统不会再次触发它)。 上面这幅图是网上找到的,很好地从整体上表述了原理,摘抄到最前面 下图是本人自己总结的信号事件代码级原理图 下面是展开分析代码实现一、初始化信号事件 调用base->evbase = base->evsel->原创 2017-06-09 16:00:34 · 1052 阅读 · 0 评论 -
Libevent学习-------定时器事件
定时器事件的创建Libevent 一般调用evtimer_new来定义一个定时器事件#define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg))从宏定义来看,这个事件和io、signal事件的区别在于fd项为-1,表示并不关注, 并且events项为0, 并不是想象中的EV_TIMEOUT. evtimer_ne原创 2017-06-14 17:58:54 · 8517 阅读 · 0 评论