高性能定时器
高性能定时器的设计一般有两种方法:时间轮、基于堆的定时器;
时间轮:

如上图所示:一共有N个槽,每个槽指向一条定时器链表,
每次转动就指向下一个槽,以恒定的速度顺时针转动,每转动一步就指向下一个槽,每次转动的时间间隔为si,一共有N个槽,因此运转一周时间为N*si
每条链表上的定时器定时时间相差N*si的整数倍;
利用这个规则则可以将定时器插入到这个时间轮中
例如:现在指向槽N1,此时需要插入一个定时时间为T的定时器
假设现在指针指向槽

结论:要提高定时精度,就要使得si值足够小;要提高效率就要使得N的值足够大;
基于堆的实现:
此种思想是将超时时间最小的定时器作为间隔,每次都从从剩余的定时器中找出时间最小的一个;
浙公网安备 33010602011771号