上一篇讲述了eventloop
的结构和创建,添加文件事件删除文件事件,派发等等。
而eventloop主要就是调用不同网络模型
完成事件监听和派发的。
这一篇主要讲述epoll网络模型
,redis是如何封装和调用的
下面是epoll_event
的结构
1 | /* |
Ae_epoll.c
文件中回传的数据结构
1 |
|
Ae_epoll.c中创建epoll句柄
1 | //epoll 创建epfd过程 |
Ae_epoll.c重新设置events队列大小
1 | //重新设置aeApiState大小 |
Ae_epoll.c中释放内存和回收
1 | //释放aeApiState和 events 的内存 |
Ae_epoll.c添加读写事件或者更改读写事件的函数
1 | //epoll 注册事件,读或者写 |
Ae_epoll.c中删除读写事件的函数
1 | static void aeApiDelEvent(aeEventLoop *eventLoop, int fd, int delmask) { |
事件派发函数
1 | //epoll 事件派发 |
1 | //网络模型名字 |
以上是封装的epoll结构和解释