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