libevent学习笔记十一:libevent支持I/O多路复用技术
Libevent的核心是事件驱动、同步非阻塞,为了达到这一目标,必须采用系统提供的I/O多路复用技术,而这些在Windows、Linux、Unix等不同平台上却各有不同,如何能够跨平台、跨操作系统提供优雅而统一的支持方式,是首要关键要解决的问题,本节的内容就是就如何实现做的分析。
1、统一模式的关键
Libevent支持多种I/O多路复用技术的关键就在于结构体eventop,这个结构体它的成员是一系列的函数指针, 定义在event-internal.h文件中:
struct eventop {
const char *name;
void *(*init)(struct event_base *); // 初始化
int (*add)(void *, struct event *); // 注册事件
int (*del)(void *, struct event *); // 删除事件
int (*dispatch)(struct event_base *, void *, struct timeval *); // 事件分发
void (*dealloc)(struct event_base *, void *); // 注销,释放资源
/* set if we need to reinitialize the event base */
int need_reinit;
};
在上面代码中,我们可以看到这个结构体中,包含了五个函数。在libevent中,每种I/O de

本文探讨libevent库如何通过事件驱动和非阻塞I/O实现跨平台I/O多路复用,重点分析了libevent如何利用eventop结构体和函数指针在不同操作系统上提供统一的I/O多路复用支持。
最低0.47元/天 解锁文章
275

被折叠的 条评论
为什么被折叠?



