定时器及时间轮
定时器的基本模型 : StartTimer(Interval, TimerId, ExpiryAction) 注册一个时间间隔为 Interval 后执行 ExpiryAction 的定时器实例,其中返回 TimerId 以区分在定时器系统中的其他定时器实例。 StopTimer(TimerId) 根据 TimerId 找到注册的定时器实例并执行 Stop 。 PerTickBookkeeping() 在一个 Tick 内,定时器系统需要执行的动作,它最主要的行为, 就是检查定时器系统中,是否有定时器实例已经到期。 ExpiryProcessing() 在定时器实例到期之后,执行预先注册好的 ExpiryAction 行为。 Single-Shot Timer 这种定时器,从注册到终止,仅仅只执行一次。 Repeating Timer 这种定时器,在每次终止之后,会自动重新开始。本质上,可以认为 Repeating Timer 是在 Single-Shot Timer 终止之后,再次注册到定时器系统里的 Single-Shot Timer, 因此在支持 Single-Shot Timer 的基础上支持 Repeating Time 并不算特别的复杂。 时间轮定时器: 时间轮是基于一个 循环链表 (实际上就是个数组,通过下标控制)的数据结构