解析libevent不同操作系统下如何选择I/O多路复用机制
作者:网络转载 发布时间:[ 2013/12/3 15:12:51 ] 推荐标签:
解析libevent 1.4.14 版本如何实现不同操作系统下配置使用I/O demultiplex机制:
一、定义
libevent在编译阶段选择系统的I/O demultiplex机制,而不支持在运行阶段根据配置选择。
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 demultiplex机制的实现都必须提供这五个函数接口,来完成自身的初始化、销毁释放;对事件的注册、注销和分发。
通过宏定义在编译的时候选择相应的I/O多路复用对象,同时用extern申明要取的对象是在别处定义的。 event.c 文件中:
|
#ifdef HAVE_EVENT_PORTS
extern const struct eventop evportops;
#endif
#ifdef HAVE_SELECT
extern const struct eventop selectops;
#endif
#ifdef HAVE_POLL
extern const struct eventop pollops;
#endif
#ifdef HAVE_EPOLL
extern const struct eventop epollops;
#endif
#ifdef HAVE_WORKING_KQUEUE
extern const struct eventop kqops;
#endif
#ifdef HAVE_DEVPOLL
extern const struct eventop devpollops;
#endif
#ifdef WIN32
extern const struct eventop win32ops;
#endif
|
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
浅谈操作系统对内存的管理HBase佳实践??用好你的操作系统选择适合Rails开发的操作系统三问:Linux操作系统安全加固卡巴斯基面向物联网设备发布专用操作系统卡巴斯基正式推出操作系统:非Linux,主打安全,秘研14年Linux以外的7种开源操作系统现代操作系统 - 存储设备看操作系统对程序的执行过程有哪些支持谷歌正开发融合操作系统Fuchsia,真的有必要吗?iOS在印度连第二名都排不上 本土操作系统太强大了解决Linux操作系统下AES解密失败的问题如何保护你的Linux操作系统?谷歌:安卓操作系统前景不容乐观韩国发布自主操作系统TmaxOS:兼容安卓、iOS和Windows摆脱安卓/WP依赖,华为将做自主操作系统

sales@spasvo.com