日期:2014-05-16  浏览次数:20550 次

Redis源码学习之【epoll封装】

介绍

在上一篇博文中说到了在Redis 的事件处理中使用到了底层的linux epoll,根据Redis的实现可以使用其他的多路通信层,但是在一般的linux服务器中使用的最多的还是epoll所以这里主要介绍一下epoll。Redis并没有直接的使用linux的epoll而是对其进行了一个简单的封装。

源码

ae_epoll.c

分析

在原有的linux epoll的基础上进行封装,主要封装了一下几个函数:

aeApiCreate:调用epoll_create创建epoll的句柄,并分配epoll事件。

aeApiFree:调用close关闭epoll_create创建的epoll句柄,并释放epoll事件。

aeApiAddEvent:调用epoll_ctl向aeEventLoop中添加一个事件。

aeApiDelEvent:调用epoll_ctl从aeEventLoop中删除一个事件。
aeApiPoll:调用epoll_wait等待事件。

具体的关于epoll的介绍可以参见博文:点击打开链接