【Libevent库源码简单笔记】libevent库的主要逻辑: 1.调用event_init函数创建event_base对象,一个event_base相当于一个Reactor实例 2.创建具体的事件处理器(evsignal_new(信号事件)、evtimer_new(定时器事件)、event_new(通用事件))(信号和定时器事件的统一入口就是通用事件)**不是事件,事件是句柄上绑定的事件,比如文件描述符上的读写事件,事件处理器是包括了事件还有其他成员比如回调函数 struct event* event_new(struct event_base* base,evutil_socket_t fd,short events, void(*cb)(evutil_socket_t,short,void*),void* arg)/*base:所从属的Reactorfd:关联的句柄,IO-文件描述符,信号-信号值(例如SIGINT)定时器-(-1)events:事件类型(可在include/event2/event.h中查看)cb:回调函数arg:回调函数的参数*/ 3.调用event_add函数进行注册(可以理解为epoll中的epoll_ctl(base,EPOLL_ADD,fd,*event)) 4.调用event_base_dispatch(可以理解为epoll_wait函数)函数执行事件循环 5.循环结束,*_free系列函数释放系统资源
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
