首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis源码阅读之ae.c

1、需要处理的事件类型和结构

这里包括文件处理事件、时间处理事件、事件终结处理事件、挂起之前处理事件

文件事件结构

时间事件结构

触发的事件结构

事件驱动程序的状态

2、原型函数

创建文件事件

这里aeApi*这些函数都是具体多路复用模块提供的

删除文件事件

获取事件当前时间

这里精确到秒和毫秒

创建时间事件

时间事件可能会在将来某个时间触发,因此会设置一个到点时刻

处理时间事件

在处理时间事件的时候,首先检查时钟漂移(对已经过期的时钟进行清零,后面会立即执行)

然后迭代时间事件链表,处理当前过期的事件

处理事件

这里包括处理时间事件和文件事件

如果既不是文件事件也不是时间事件,那么直接返回

如果当前有注册的文件事件,并且flag标志说明要处理时间事件,首先计算距离现在最近要发生的时间事件,根据时差计算,如果已经发生,那么清零,如果没有时间事件,那么就需要阻塞等待文件事件(如果设置了不等待的话,就直接返回)

等待文件事件发生或是超时,如果有文件事件发生,那么就处理发生的文件事件

再去考虑处理时间事件

事件处理主循环

在主循环中不断处理所有的事件,直到设置主循环为停止

下一篇
举报
领券