花狗

导航

 

高性能定时器

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

时间轮:

 

 

如上图所示:一共有N个槽,每个槽指向一条定时器链表,

每次转动就指向下一个槽,以恒定的速度顺时针转动,每转动一步就指向下一个槽,每次转动的时间间隔为si,一共有N个槽,因此运转一周时间为N*si

每条链表上的定时器定时时间相差N*si的整数倍;

利用这个规则则可以将定时器插入到这个时间轮中

例如:现在指向槽N1,此时需要插入一个定时时间为T的定时器

假设现在指针指向槽

 

 结论:要提高定时精度,就要使得si值足够小;要提高效率就要使得N的值足够大;

基于堆的实现:

此种思想是将超时时间最小的定时器作为间隔,每次都从从剩余的定时器中找出时间最小的一个;

 

posted on 2021-08-27 17:10  花狗  阅读(262)  评论(0)    收藏  举报