一种定时器管理系统及方法

文档序号:9235260阅读:489来源:国知局
一种定时器管理系统及方法
【技术领域】
[0001] 本发明设及计算机网络、物联网等定时器应用领域,尤其设及的是,一种基于多线 程和缓存机制的定时器管理系统及方法。
【背景技术】
[0002] 随着计算机网络、物联网等网络技术的快速发展,当网络中承载的用户终端数量 增大时,特别是在全球布局的网络中需要为数量巨大的用户终端提供大规模定时器时,常 会因为暴雨、暴雪、网元设备断电等因素影响,引起大量定时器超时。因此,必须为大规模定 时器的使用提供性能优异的管理系统和方法,W提高该些定时器的可靠性和有效性。
[0003] 图1是现有技术中哈希分级时间轮定时器管理系统的一个实施例。从图1可W看 出,该定时器管理系统有4级时间轮,分别是第0级时间轮TWO,第1级时间轮TW1,第2级时 间轮TW2和第3级时间轮TW3,每级时间轮上都有8个时间槽(每级时间轮上时间槽的个数 不必都相同),例如第0级时间轮TWO的第0个时间槽TOO,而每个时间槽内包括多个定时 器,例如在第2级时间轮TW2的第3个时间槽T23中就包括多个定时器,包括定时器tl、定 时器t2等。在图1所示定时器管理系统中,将多个定时器存放在多级时间轮上,时间轮之 间存在着类似时分秒的进位关系,低级时间轮存放近期将超时的定时器,高级时间轮存放 更久W后将超时的定时器。但是,该种定时器管理系统只适合中小规模、低超时率的定时器 应用,当需要对大规模、高并发、高超时率的定时器进行管理时,经常需要将大量定时器从 高层级时间轮移动至低层级时间轮,该过程将耗费大量CPU时间,导致响应时间较长并伴 随有累积时延,进而影响定时精度和性能。实际上,定时器管理系统对超时定时器的处理速 率跟不上定时器的使用频率是造成该一问题的根本原因,也就是说在当前超时定时器还没 有被及时查找和处理完,又有新的定时器出现了超时需要等待处理,该样就造成了间歇性 响应时间过长的问题,引发累积时延,造成该定时器管理系统难W高效管理大规模定时器。
[0004] 为此,需要提供一种定时器管理系统及方法,解决大规模定时器超时处理时间过 长、引发累积时延,造成定时器的定时精度和运行稳定性降低的问题。

【发明内容】

[0005] 本发明主要解决的技术问题是针对定时器在超时后因不能得到及时有效的处理 而造成累积时延、定时精度降低等现象,提供一种有效解决该问题的定时器管理系统及方 法。
[0006] 为解决上述技术问题,本发明采用的一个技术方案是;提供一种定时器管理系统, 包括N个时间轮组,N > 2,每个该时间轮组包括M个分级时间轮,M > 1,该分级时间轮均 设置有时间槽,该时间槽内包括定时器,该定时器管理系统还包括至少1个缓冲时间轮,该 缓冲时间轮设置有与该N个时间轮组一一对应的N个缓冲时间槽,该缓冲时间轮W相同的 时隙间隔在该N个缓冲时间槽之间循环运行,并且,该缓冲时间轮与该N个时间轮组并行运 行,当该缓冲时间轮运行到其中第k个该缓冲时间槽时,对第k个时间轮组进行定时器管 理,k G [0,N-1]。
[0007] 在本发明定时器管理系统另一实施例中,该分级时间轮是可被循环访问的数组, 该分级时间轮上设置的时间槽是该数组的成员,该时间槽内包括的定时器组成双向链表。 [000引在本发明定时器管理系统另一实施例中,该缓冲时间轮为1个,该时间轮组和缓 冲时间槽的个数N = 4,每个该时间轮组包括的分级时间轮的个数M = 4。
[0009] 在本发明定时器管理系统另一实施例中,该缓冲时间轮为1个,该时间轮组和缓 冲时间槽的个数N = 4,每个该时间轮组包括的分级时间轮的个数M = 5,该时隙间隔为10 毫秒,该定时器的数量不大于600万个,该定时器的定时时长范围是10毫秒至10分钟。
[0010] 本发明还提供了一种定时器管理方法,基于上述的定时器管理系统,该缓冲时间 轮W主线程方式运行,该N个时间轮组WN个独立的子线程方式运行,当该缓冲时间轮W相 同的时隙间隔循环运转到第k个缓冲时间槽时,该主线程与第k个子线程相互协同对该第 k个时间轮组进行定时器管理,包括;加入定时器,向该第k个时间轮组添加新的定时器;查 找超时定时器,查找该第k个时间轮组内的超时定时器;删除定时器,将该第k个时间轮组 内的超时定时器删除。
[0011] 在本发明定时器管理方法另一实施例中,该加入定时器的方法是:
[0012] (1)若该定时器的定时时长小于等于N个时隙间隔,则将该定时器直接设置在该 缓冲时间轮的该缓冲时间槽内,该缓冲时间槽的序号k_num是:
[001 引
[0014] (2)若该定时器的定时时长大于N个时隙间隔,则将该定时器设置在时间轮组中, 该时间轮组的序号c_num是;
[0015]
[0016] 并且,若该时间轮组的分级时间轮的个数M = 4,计算:
[0017]
[0021] position [0] = t_exp% RO
[0022] 若第3级时间轮没有运行到其中的第position巧]号时间槽,则将该定时器设置 在该第3级时间轮的第position巧]号时间槽内;
[0023] 若第3级时间轮运行到其中的第position巧]号时间槽,并且,若第2级时间轮 没有运行到其中的第position巧]号时间槽,则将该定时器设置在该第2级时间轮的第 position[2]号时间槽内;
[0024] 若第3级时间轮运行到其中的第position巧]号时间槽,第2级时间轮运行到其 中的第position巧]号时间槽,并且,若第1级时间轮没有运行到其中的第positions]号 时间槽,则将该定时器设置在该第1级时间轮的第positions]号时间槽内;
[0025] 若第3级时间轮运行到其中的第position巧]号时间槽,第2级时间轮运行到其 中的第position[2]号时间槽,第1级时间轮运行到其中的第position^]号时间槽,并 且,若第0级时间轮没有运行到其中的第position [0]号时间槽,则将该定时器设置在该第 0级时间轮的第P〇sition[0]号时间槽内;
[0026] 其中,T_LENGTH表示该定时时长,T_^0T表示该时隙间隔,P_CACHE则是该缓冲时 间轮段当前指针指向的缓冲时间槽的序号,% N表示除WN后求余数,T_N0W表示当前时 亥|J,T_START表示该定时器开始启动定时的时刻,符号U表示向下取整,R0表示该第0级时 间轮的时间槽的个数,R1表示该第1级时间轮的时间槽的个数,R2表示该第2级时间轮的 时间槽的个数,R3表示该第3级时间轮的时间槽的个数。
[0027] 在本发明定时器管理方法另一实施例中,该查找超时定时器的方法是:
[002引该主线程在该时隙间隔内对第k个缓冲时间槽内的超时定时器进行处理,处理结 束后通知第k个子线程,由该第k个子线程查找下一轮N个时隙间隔内第k个时间组轮中 超时的定时器。
[0029] 在本发明定时器管理方法另一实施例中,该主线程包括:获取该缓冲时间轮上该 第k个缓冲时间槽内的超时定时器;将该超时定时器推送给处理模块处理;再通知该第k 号子线程;进入下一个缓冲时间槽。
[0030] 在本发明定时器管理方法另一实施例中,该通知该第k号子线程包括:该主线程 对第k个信号量进行V操作。
[0031] 在本发明定时器管理方法另一实施例中,该第k个子线程包括;对该第k个信号量 进
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1