C语言中如何实现长尾定时器,并详细描述时间轮的工作原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4050个文字,预计阅读时间需要17分钟。
目录+定时器+最小堆实现定时器+时间轮+单层时间轮+多层时间轮+定时器+有时我们需要延迟执行一些功能,比如每10秒进行一次数据采集。或者提醒用户技能冷却时间。
目录
- 定时器
- 最小堆实现定时器
- 时间轮
- 单层级时间轮
- 多层级时间轮
定时器
有些时候我们需要延迟执行一些功能,比如每10s进行一次数据采集。或者告知用户技能冷却有多少时间,如果我们将执行这些功能的任务交给主线程,就会造成主线程的阻塞。因此我们可以选择一个创建一个子线程,让其检测定时器中的任务,当有任务的时间到了的时候,就去执行这个任务。
最小堆实现定时器
定时器可以由很多种数据结构实现,比如最小堆、红黑树、跳表、甚至数组都可以,其本质都是拿到最小时间的任务,然后取出该任务并执行。
综合实现难度和效率来看,最小堆是最容易实现定时器的数据结构。
本文共计4050个文字,预计阅读时间需要17分钟。
目录+定时器+最小堆实现定时器+时间轮+单层时间轮+多层时间轮+定时器+有时我们需要延迟执行一些功能,比如每10秒进行一次数据采集。或者提醒用户技能冷却时间。
目录
- 定时器
- 最小堆实现定时器
- 时间轮
- 单层级时间轮
- 多层级时间轮
定时器
有些时候我们需要延迟执行一些功能,比如每10s进行一次数据采集。或者告知用户技能冷却有多少时间,如果我们将执行这些功能的任务交给主线程,就会造成主线程的阻塞。因此我们可以选择一个创建一个子线程,让其检测定时器中的任务,当有任务的时间到了的时候,就去执行这个任务。
最小堆实现定时器
定时器可以由很多种数据结构实现,比如最小堆、红黑树、跳表、甚至数组都可以,其本质都是拿到最小时间的任务,然后取出该任务并执行。
综合实现难度和效率来看,最小堆是最容易实现定时器的数据结构。

