C/C++后端开发学习
发布时间
阅读量:
阅读量
文章结构概述
- 定时任务的处理机制
-
实现途径
-
- 1)红黑树
- 2)最小堆
- 3)时间轮
- 技术选型
-
时间轮的构建方式
-
- 单层结构时间轮
- 多层结构时间轮
-
- Skynet的时间轮实现方案
-
定时任务的处理方式
服务端的驱动逻辑主要涵盖两种事件类型的处理,即网络I/O事件与定时事件,不同框架在整合这两种事件处理流程时采用了各异的策略:
- 在单一线程中依次处理网络I/O事件与定时事件,例如nginx和redis。这类方案通过epoll_wait机制监控I/O状态,并借助timeout参数实现定时功能,但其不足之处在于I/O操作可能引发较为明显的延迟问题。
- 将网络事件与I/O事件分配至不同线程进行处理,如skynet框架。该方式通过独立线程负责检测并更新定时器,并将触发的定时事件传递至消息队列中进行后续处理。
实现方案
在设计定时器时,首要任务是挑选适合的数据结构,此类结构需符合两个核心条件:
- 构成元素需按照一定顺序排列(即将临近触发的任务置于前列)
- 能够高效检索出键值最小的节点
较为适用的结构类型涵盖红黑树、最小堆以及时间轮等方案。
1)红黑树
对数据结构进行插入、删除或修改操
全部评论 (0)
还没有任何评论哟~
