在 Linux 要实现定时器,虽然实现方式可能有所不同,但是很多在原理上都是一致的,可以当成一种,这样一来,可以笼统得归纳成三类,分别是:
- 精确度比较高的 IO 复用系统调用
- 比较常见的 SIGALRM 信号
- 针对网络的 socket 选项 SO_RCVTIMEO 和 SO_SNDTIMEO
基于 SIGALRM 信号呢,具体实现起来方法也很多,这里我主要讨论一下以下几种方式:
- 基于链表
- 基于排序链表
- 基于时间轮
- 基于最小堆
硬中断
本文探讨了在Linux中实现定时器的多种方法,包括精确度较高的IO复用系统调用、SIGALRM信号、socket选项SO_RCVTIMEO和SO_SNDTIMEO,以及基于SIGALRM信号的不同实现方式如链表、排序链表、时间轮和最小堆。
在 Linux 要实现定时器,虽然实现方式可能有所不同,但是很多在原理上都是一致的,可以当成一种,这样一来,可以笼统得归纳成三类,分别是:
基于 SIGALRM 信号呢,具体实现起来方法也很多,这里我主要讨论一下以下几种方式:
硬中断

被折叠的 条评论
为什么被折叠?