前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis源码阅读之ae.c

Redis源码阅读之ae.c

作者头像
chain
发布2018-08-02 15:08:02
3240
发布2018-08-02 15:08:02
举报

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

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

文件事件结构

时间事件结构

触发的事件结构

事件驱动程序的状态

2、原型函数

创建文件事件

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

删除文件事件

获取事件当前时间

这里精确到秒和毫秒

创建时间事件

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

处理时间事件

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

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

处理事件

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

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

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

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

再去考虑处理时间事件

事件处理主循环

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年05月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档