本文主要是介绍高性能的定时器设计---时间轮,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
高性能定时器时间轮
时间轮共N个槽,因此运转一周时间为`N*si`
每个槽指向一条定时器链表(每条链表上的定时器具有相同特征,即他们的定时时间相差几个(0,1,2...)N*si)
假如现在指针指向槽cs,我们要添加一个定时时间为ti的定时器,则该定时器会被插入槽ts对应的链表中去:
ts = (cs+(ti/si))%N
可以看出,时间轮使用哈希表的思想将定时器散列到不同的链表上。之前讨论的链式定时器插入操作复杂度受定时器个数影响,但这里基本不受此影响了。
对于时间轮要提出的问题是:
要提高定时精度,就要使si值足够小(毕竟不能精确按照每个定时器来定时);要提高执行效率,要求N值足够大
这篇关于高性能的定时器设计---时间轮的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!