CN104951282A - 一种定时器管理系统及方法 - Google Patents
一种定时器管理系统及方法 Download PDFInfo
- Publication number
- CN104951282A CN104951282A CN201510262734.1A CN201510262734A CN104951282A CN 104951282 A CN104951282 A CN 104951282A CN 201510262734 A CN201510262734 A CN 201510262734A CN 104951282 A CN104951282 A CN 104951282A
- Authority
- CN
- China
- Prior art keywords
- time
- timer
- slot
- wheel
- surge
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Measurement Of Predetermined Time Intervals (AREA)
Abstract
本发明公开了一种定时器管理系统和方法,该系统包括至少1个缓冲时间轮,该缓冲时间轮设置有与多个时间轮组一一对应的多个缓冲时间槽,时间轮组由多级时间轮组成,缓冲时间轮以主线程方式在缓冲时间槽上以固定的间隔时隙循环运行,各时间轮组以独立的子线程方式查找各时间轮组中的超时定时器并交由缓冲时间轮循环处理。该系统和方法能够缩短处理定时器的响应时间,消除累积时延,提高定时精度,适于在多核CPU的计算机中应用。
Description
技术领域
本发明涉及计算机网络、物联网等定时器应用领域,尤其涉及的是,一种基于多线程和缓存机制的定时器管理系统及方法。
背景技术
随着计算机网络、物联网等网络技术的快速发展,当网络中承载的用户终端数量增大时,特别是在全球布局的网络中需要为数量巨大的用户终端提供大规模定时器时,常会因为暴雨、暴雪、网元设备断电等因素影响,引起大量定时器超时。因此,必须为大规模定时器的使用提供性能优异的管理系统和方法,以提高这些定时器的可靠性和有效性。
图1是现有技术中哈希分级时间轮定时器管理系统的一个实施例。从图1可以看出,该定时器管理系统有4级时间轮,分别是第0级时间轮TW0,第1级时间轮TW1,第2级时间轮TW2和第3级时间轮TW3,每级时间轮上都有8个时间槽(每级时间轮上时间槽的个数不必都相同),例如第0级时间轮TW0的第0个时间槽T00,而每个时间槽内包括多个定时器,例如在第2级时间轮TW2的第3个时间槽T23中就包括多个定时器,包括定时器t1、定时器t2等。在图1所示定时器管理系统中,将多个定时器存放在多级时间轮上,时间轮之间存在着类似时分秒的进位关系,低级时间轮存放近期将超时的定时器,高级时间轮存放更久以后将超时的定时器。但是,这种定时器管理系统只适合中小规模、低超时率的定时器应用,当需要对大规模、高并发、高超时率的定时器进行管理时,经常需要将大量定时器从高层级时间轮移动至低层级时间轮,该过程将耗费大量CPU时间,导致响应时间较长并伴随有累积时延,进而影响定时精度和性能。实际上,定时器管理系统对超时定时器的处理速率跟不上定时器的使用频率是造成这一问题的根本原因,也就是说在当前超时定时器还没有被及时查找和处理完,又有新的定时器出现了超时需要等待处理,这样就造成了间歇性响应时间过长的问题,引发累积时延,造成该定时器管理系统难以高效管理大规模定时器。
为此,需要提供一种定时器管理系统及方法,解决大规模定时器超时处理时间过长、引发累积时延,造成定时器的定时精度和运行稳定性降低的问题。
发明内容
本发明主要解决的技术问题是针对定时器在超时后因不能得到及时有效的处理而造成累积时延、定时精度降低等现象,提供一种有效解决该问题的定时器管理系统及方法。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种定时器管理系统,包括N个时间轮组,N≥2,每个该时间轮组包括M个分级时间轮,M≥1,该分级时间轮均设置有时间槽,该时间槽内包括定时器,该定时器管理系统还包括至少1个缓冲时间轮,该缓冲时间轮设置有与该N个时间轮组一一对应的N个缓冲时间槽,该缓冲时间轮以相同的时隙间隔在该N个缓冲时间槽之间循环运行,并且,该缓冲时间轮与该N个时间轮组并行运行,当该缓冲时间轮运行到其中第k个该缓冲时间槽时,对第k个时间轮组进行定时器管理,k∈[0,N-1]。
在本发明定时器管理系统另一实施例中,该分级时间轮是可被循环访问的数组,该分级时间轮上设置的时间槽是该数组的成员,该时间槽内包括的定时器组成双向链表。
在本发明定时器管理系统另一实施例中,该缓冲时间轮为1个,该时间轮组和缓冲时间槽的个数N=4,每个该时间轮组包括的分级时间轮的个数M=4。
在本发明定时器管理系统另一实施例中,该缓冲时间轮为1个,该时间轮组和缓冲时间槽的个数N=4,每个该时间轮组包括的分级时间轮的个数M=5,该时隙间隔为10毫秒,该定时器的数量不大于600万个,该定时器的定时时长范围是10毫秒至10分钟。
本发明还提供了一种定时器管理方法,基于上述的定时器管理系统,该缓冲时间轮以主线程方式运行,该N个时间轮组以N个独立的子线程方式运行,当该缓冲时间轮以相同的时隙间隔循环运转到第k个缓冲时间槽时,该主线程与第k个子线程相互协同对该第k个时间轮组进行定时器管理,包括:加入定时器,向该第k个时间轮组添加新的定时器;查找超时定时器,查找该第k个时间轮组内的超时定时器;删除定时器,将该第k个时间轮组内的超时定时器删除。
在本发明定时器管理方法另一实施例中,该加入定时器的方法是:
(1)若该定时器的定时时长小于等于N个时隙间隔,则将该定时器直接设置在该缓冲时间轮的该缓冲时间槽内,该缓冲时间槽的序号k_num是:
(2)若该定时器的定时时长大于N个时隙间隔,则将该定时器设置在时间轮组中,该时间轮组的序号c_num是:
并且,若该时间轮组的分级时间轮的个数M=4,计算:
position[0]=t_exp%R0
若第3级时间轮没有运行到其中的第position[3]号时间槽,则将该定时器设置在该第3级时间轮的第position[3]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,并且,若第2级时间轮没有运行到其中的第position[2]号时间槽,则将该定时器设置在该第2级时间轮的第position[2]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,第2级时间轮运行到其中的第position[2]号时间槽,并且,若第1级时间轮没有运行到其中的第position[1]号时间槽,则将该定时器设置在该第1级时间轮的第position[1]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,第2级时间轮运行到其中的第position[2]号时间槽,第1级时间轮运行到其中的第position[1]号时间槽,并且,若第0级时间轮没有运行到其中的第position[0]号时间槽,则将该定时器设置在该第0级时间轮的第position[0]号时间槽内;
其中,T_LENGTH表示该定时时长,T_SLOT表示该时隙间隔,P_CACHE则是该缓冲时间轮段当前指针指向的缓冲时间槽的序号,%N表示除以N后求余数,T_NOW表示当前时刻,T_START表示该定时器开始启动定时的时刻,符号表示向下取整,R0表示该第0级时间轮的时间槽的个数,R1表示该第1级时间轮的时间槽的个数,R2表示该第2级时间轮的时间槽的个数,R3表示该第3级时间轮的时间槽的个数。
在本发明定时器管理方法另一实施例中,该查找超时定时器的方法是:
该主线程在该时隙间隔内对第k个缓冲时间槽内的超时定时器进行处理,处理结束后通知第k个子线程,由该第k个子线程查找下一轮N个时隙间隔内第k个时间组轮中超时的定时器。
在本发明定时器管理方法另一实施例中,该主线程包括:获取该缓冲时间轮上该第k个缓冲时间槽内的超时定时器;将该超时定时器推送给处理模块处理;再通知该第k号子线程;进入下一个缓冲时间槽。
在本发明定时器管理方法另一实施例中,该通知该第k号子线程包括:该主线程对第k个信号量进行V操作。
在本发明定时器管理方法另一实施例中,该第k个子线程包括:对该第k个信号量进行P操作;将第0级时间轮的指针顺时针转动1格;判断该第0级时间轮的指针是否指向第0号时间槽;若指向第0号时间槽,则调整该第k个时间轮组中高层级时间轮的指针,再将部分定时器从上一级时间轮的时间槽移动到下一级时间轮的时间槽,然后,将第0级时间轮指针指向的第0号时间槽内的超时定时器移到缓冲时间轮的第k号缓冲时间槽内,然后返回对第k个信号量进行下一次P操作;若没有指向第0号时间槽,则直接将第0级时间轮指针指向的时间槽内的超时定时器移到缓冲时间轮的第k号缓冲时间槽内,然后返回对第k个信号量进行下一次P操作。
本发明的有益效果是:通过缓冲时间轮与多个时间轮组的系统结构,在缓冲时间轮与多个时间轮组之间建立起独立并行的多线程运行机制,各时间轮组提前查找和存储本时间轮组中即将超时的定时器,缓冲时间轮以固定的时隙间隔循环处理这些超时定时器,与现有技术相比,能够缩短处理超时定时器的响应时间,消除累积时延,提高定时器的精度,保证了定时器同时运行的稳定性,充分发挥出多核CPU的并行处理优势,增强了定时器应用的领域。
附图说明
图1是现有技术中哈希分级时间轮定时器管理系统的一实施例的组成图;
图2是根据本发明定时器管理系统一实施例的组成图;
图3是根据本发明定时器管理方法一实施例的流程图;
图4是根据本发明定时器管理方法一实施例中的缓冲时间轮运行的主线程的流程图;
图5是根据本发明定时器管理方法一实施例中的第k号子线程的流程图;
图6是哈希分级时间轮与本发明定时器管理系统一实施例的响应时间对比分析图;
图7是哈希分级时间轮与本发明定时器管理系统一实施例的累积时延对比分析图。
具体实施方式
为了便于理解本发明,下面结合附图和具体实施例,对本发明进行更详细的说明。附图中给出了本发明的较佳的实施例。但是,本发明可以以许多不同的形式来实现,并不限于本说明书所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。
需要说明的是,除非另有定义,本说明书所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是用于限制本发明。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
图2是本发明根据本发明定时器管理系统一实施例的组成图。图2中有4个时间轮组,即第0时间轮组TC0、第1时间轮组TC1、第2时间轮组TC2和第3时间轮组TC3,这4个时间轮组的组成与图1所示哈希分级时间轮定时器管理系统相同,均包括分级时间轮,每一个时间轮上又有时间槽,而每个时间槽上又包括定时器,工作原理也与图1所示哈希分级时间轮定时器管理系统相同,此处不再赘述。另外,图2中还有1个缓冲时间轮TX0,该缓冲时间轮TX0设置有4个缓冲时间槽,即TX00、TX01、TX02、TX03,缓冲时间轮TX0以相同的时隙间隔在这4个缓冲时间槽之间循环运行,例如时隙间隔是10毫秒,缓冲时间轮TX0以顺时针方向在4个缓冲时间槽之间循环运行,即在缓冲时间槽TX00驻留10毫秒,再在缓冲时间槽TX01驻留10毫秒,依次循环下去。这4个缓冲时间槽还与上述4个时间轮组一一对应,即缓冲时间槽TX0对应第0时间轮组TC0、缓冲时间槽TX1对应第1时间轮组TC1、缓冲时间槽TX2对应第2时间轮组TC2、缓冲时间槽TX3对应第3时间轮组TC3,当缓冲时间轮TX0运行到其中某一个缓冲时间槽时,将对该缓冲时间槽对应的时间轮组进行定时器管理。并且,缓冲时间轮TX0与上述4个时间轮组TC0、TC1、TC2和TC3均是并行运行的,例如缓冲时间轮以主线程方式运行,而4个时间轮组TC0、TC1、TC2和TC3分别以4个独立的子线程方式运行。
由此,当缓冲时间轮TX0运行到某一缓冲时间槽时,例如当运行到第0缓冲时间槽TX0时,缓冲时间轮TX0对第0时间轮组TC0的超时定时器进行处理,处理的时间是1个时隙间隔,当该时隙间隔结束时,无论对第0时间轮组TC0的超时定时器是否处理完,缓冲时间轮TX0都将进入第1缓冲时间槽TX1,对第1时间轮组TC1的超时定时器进行处理,即第1时间轮组TC1都将在预定时刻被执行处理超时定时器。这样,即使第0时间轮组TC0还有未被处理的超时定时器,也不会影响对第1时间轮组TC1中超时定时器的处理,由此消除因处理第0时间轮组TC0中超时定时器,而对处理第1时间轮组TC1中超时定时器带来的累积时延。另外,由于缓冲时间轮TX0与上述4个时间轮组TC0、TC1、TC2和TC3均是并行运行的,例如当缓冲时间轮TX0离开第0缓冲时间槽TX00后,需要经过3个时隙间隔(分别进入TX01、TX02、TX03)才能循环再次进入第0缓冲时间槽TX00,在这3个时隙间隔内,第0时间轮组TC0就可以查找和存储该时间轮组中即将超时的定时器,而当缓冲时间轮TX0再次运行到第0缓冲时间槽TX00时,则可以直接将查找的结果在该时间槽的时隙间隔内处理,以此解决响应时间过长的问题。由此可见,采用图2所示定时器管理系统能够有效解决定时器管理中的累积时延和响应时间过长的问题。
图2中所示的缓冲时间轮只有1个,在此基础上还可以扩充多个缓冲时间轮,这些缓冲时间轮彼此独立运行。而每个缓冲时间轮都具有2个或2个以上的缓冲时间槽及对应时间轮组,每个时间轮组中有至少1个分级时间轮。
作为优选实施例,分级时间轮的具体实现方式可以是一个被循环访问的数组,而在分级时间轮上设置的时间槽就是该数组的成员。这样,对分级时间轮的循环访问,就可以通过对数组中各成员的循环访问来实现。对于存储在时间槽内的定时器,可以以双向链表中的节点形式来表示,即一个时间槽内的定时器是以节点的形式组成一个双向链表,这样当查找某一个定时器时,就可以通过表示该定时器的节点在双向链表中具体位置来查找,以下给出了表示定时器的节点定义的一个函数实施例:
在另一个优选实施例中,缓冲时间轮为1个,时间轮组和缓冲时间槽的个数N=4,每个时间轮组包括的分级时间轮的个数M=5,每个分级时间轮上包括的时间槽数为16,时隙间隔为10毫秒,置于时间槽内总的定时器的数量不大于600万个,定时器的定时时长范围是10毫秒至10分钟。
本发明还提供了定时器管理方法的优选实施例,这些实施例均是在上述定时器管理系统实施例基础上对定时器进行管理,属于同一构思。
图3是根据本发明定时器管理方法一实施例的流程图。在该定时器管理方法中,缓冲时间轮以主线程方式运行,N个时间轮组以N个独立的子线程方式运行,N≥2,当该缓冲时间轮以相同的时隙间隔循环运转到第k个缓冲时间槽时,k∈[0,N-1],该主线程与第k个子线程相互协同对第k个时间轮组进行定时器管理,具体包括:加入定时器S101,向该第k个时间轮组添加新的定时器;查找超时定时器S102,查找该第k个时间轮组内的超时定时器;删除定时器S103,将所述第k个时间轮组内的超时定时器删除,其作用就是停止这些超时定时器的计时并从所在的时间槽内删除。
以下通过优选实施例,对加入定时器S101和查找超时定时器S102做进一步说明。
对于加入定时器S101,主要是对将要新添加的定时器,根据其定时时长的不同将其设置在不同的位置。
若该定时器的定时时长小于等于N个时隙间隔,即小于等于缓冲时间轮的1个循环周期,则将定时器直接设置在缓冲时间轮的缓冲时间槽内,所在缓冲时间槽的序号k_num是:
其中,T_LENGTH表示该定时器的定时时长,T_SLOT表示时隙间隔,P_CACHE则是当前缓冲时间段运行到所在缓冲时间槽的序号,%N表示除以N后求余数;
若该定时器的定时时长大于N个时隙间隔,即大于缓冲时间轮的1个循环周期,则将该定时器设置在时间轮组中,所在时间轮组的序号c_num是:
若所在时间轮组的分级时间轮的个数M=4,先计算:
position[0]=t_exp%R0 (5)
其中,T_LENGTH表示该定时器的定时时长,T_NOW表示当前时刻,T_START表示该定时器开始启动定时的时刻,T_SLOT表示时隙间隔,符号表示向下取整,即小数点以后的值都舍去,只保留整数部分,如R0表示第0级时间轮的时间槽的个数,R1表示第1级时间轮的时间槽的个数,R2表示第2级时间轮的时间槽的个数,R3表示第3级时间轮的时间槽的个数,
若第3级时间轮没有运行到其中的第position[3]号时间槽,则将该定时器设置在该第3级时间轮的第position[3]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,并且,若第2级时间轮没有运行到其中的第position[2]号时间槽,则将该定时器设置在该第2级时间轮的第position[2]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,第2级时间轮运行到其中的第position[2]号时间槽,并且,若第1级时间轮没有运行到其中的第position[1]号时间槽,则将该定时器设置在该第1级时间轮的第position[1]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,第2级时间轮运行到其中的第position[2]号时间槽,第1级时间轮运行到其中的第position[1]号时间槽,并且,若第0级时间轮没有运行到其中的第position[0]号时间槽,则将该定时器设置在该第0级时间轮的第position[0]号时间槽内。
对于查找超时定时器S102,主要是查找当前时刻发生超时的定时器。该步骤需要缓冲时间轮运行的主线程与当前时刻运行到第k个缓冲时间槽所对应的第k个时间轮组运行的第k个子线程相互协同,主要由该主线程在该时隙间隔内对第k个缓冲时间槽内的超时定时器进行处理,处理结束后通知第k个子线程,由该第k个子线程查找下一轮N个时隙间隔内第k个时间组轮中超时的定时器。
图4是根据本发明定时器管理方法一实施例中的缓冲时间轮运行的主线程的流程图。其中,获取缓冲时间轮上第k个缓冲时间槽内的超时定时器S201,就是当缓冲时间轮的指针顺时针转动指向第k个缓冲时间槽时,主线程开始对第k个缓冲时间槽内的定时器进行处理,而这些定时器都是第k个时间组轮中超时的定时器,是由第k个时间组轮对应的第k个子线程完成查找并放入第k个缓冲时间槽的;然后,主线程将这些超时定时器推送给处理模块处理S202,由处理模块对超时定时器进行处理,如定时器清空、重新设置定时时长、更改定时器属性等,这些处理过程由处理模块独立完成,主线程只是完成向处理模块的推送移交即可;再通知第k号子线程S203,表示主线程已经完成对第k个时间组轮中超时定时器的处理,通知第k号子线程对第k个时间组轮查找下面N个时隙间隔内超时的定时器,该通知过程是主线程与第k号子线程之间通过对第k个信号量进行PV操作来实现协同或同步的,即:主线程对第k个信号量进行V操作,第k号子线程对第k个信号量进行P操作。P操作和V操作是操作系统中的常用操作方式,属于现有技术不再赘述。然后,进入下一个缓冲时间槽S204,缓冲时间轮将其指针顺时针转动一格,即指向第(k+1)%N个缓冲时间槽。
图5是根据本发明定时器管理方法一实施例中的第k号子线程的流程图。其中,对第k个信号量进行P操作S301,这是与主线程中对第k个信号量进行V操作相对应,主要是通过对第k个信号量的PV操作在主线程和第k号子线程之间进行同步;P操作成功以后,将第0级时间轮的指针顺时针转动1格S302,即:将第0级时间轮运行到下一个时间槽;判断第0级时间轮的指针是否指向第0号时间槽S303;若没有指向第0号时间槽,则将第0级时间轮指针指向的时间槽内的超时定时器移到缓冲时间轮的第k号缓冲时间槽内S305;若指向第0号时间槽,则调整第k号时间轮组中高层级时间轮的指针,再将部分定时器从上一级时间轮的时间槽内移动到下一级时间轮的时间槽内S304,然后再进入步骤305。完成步骤305后,再次对第k个信号量进行P操作S301,把第k号缓冲时间槽内新进入的超时定时器信息反馈主线程。
以下分别是主线程和第k号子线程的一个实施例函数。其中,T_SLOT表示时隙间隔,P_CACHE表示缓冲时间轮(CHACHE轮)的指针指向的位置,Semaphore[k](k=0,1,…,N-1)表示第k个信号量,point_wheel[m][n]表示第m个时间轮组第n级时间轮的指针指向位置,R0表示第0级时间轮的时间槽的个数。
为了验证本发明定时器管理系统和方法的性能,还与现有技术的哈希分级时间轮进行对比测试。基本条件是:定时器数量维持在600万左右,时隙间隔为10ms,定时器的定时时长为10ms至10min,使用2.4GHz的四核CPU。在实现过程中,哈希分级时间轮使用5个分级时间轮,每个分级时间轮的时间槽数为16;本发明定时器管理系统实施例使用缓冲时间槽数为4的缓冲时间轮,并构造4个时间轮组,各时间轮组中含有时间槽数为16的5级时间轮。两个定时器系统均运行131070个时间片(约22分钟)。
图6是哈希分级时间轮与本发明定时器管理系统一实施例查找超时定时器的响应时间对比分析图。这里,响应时间是从开启超时定时器查找操作到获得超时定时器链表的时长,该指标被用于评价定时器管理方法的效率。图5中哈希分级时间轮响应时间大于0ms的次数为31次,大于1个时隙间隔即10ms的次数为28次。本发明定时器管理系统执行查找超时定时器操作的响应时间始终近似于0ms,该方法发挥了缓存机制的优势,提升了处理定时器的速率。
图7是哈希分级时间轮与本发明定时器管理系统一实施例累积时延对比分析图。这里,累积时延是开启超时定时器查找操作的实际时刻与理想时刻的时间间隔,该指标被用于评价定时器管理方法的稳定性。图6记录了定时器累积时延,哈希分级时间轮的累积时延超过500ms,本发明定时器管理系统没有累积时延。随着定时器管理模块运行时间的延长,本发明定时器管理系统始终保持较高的定时精度,拥有较好的稳定性。
并且,在测试过程中,CPU的4个核在哈希分级时间轮中的平均使用率分别为:5%,97%,0%,0%,在采用多线程机制的本发明定时器管理系统中则分别为:15%,70%,14%,5%。CPU各核的空闲率为本发明提供了扩展规模的空间,依据“木桶效应”原理,其中数值最小的空闲率直接决定了扩展规模的幅度。本发明均衡了CPU各核负载,尽管仍有负载突出的个别CPU核(使用率为70%),但是相比其他方法,该核的空闲率已经高达30%,定时器规模仍有较大扩展空间。随着多核CPU的普及,使用多线程技术,将更有利于充分发挥多核CPU的性能。
通过上述方式,本发明定时器管理系统和方法,主要是基于计算机的多线程和缓存机制,通过在子线程提前查找和存储即将超时的定时器和在主线程以固定的时隙间隔循环处理超时定时器,能够缩短处理大规模定时器的响应时间,消除累积时延,提高定时精度,适应多核CPU的在计算机中的普遍应用。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种定时器管理系统,包括N个时间轮组,N≥2,每个所述时间轮组包括M个分级时间轮,M≥1,所述分级时间轮均设置有时间槽,所述时间槽内包括定时器,其特征在于,
所述定时器管理系统还包括至少1个缓冲时间轮,所述缓冲时间轮设置有与所述N个时间轮组一一对应的N个缓冲时间槽,所述缓冲时间轮以相同的时隙间隔在所述N个缓冲时间槽之间循环运行,并且,所述缓冲时间轮与所述N个时间轮组并行运行,当所述缓冲时间轮运行到其中第k个所述缓冲时间槽时,对第k个时间轮组进行定时器管理,k∈[0,N-1]。
2.根据权利要求1所述的定时器管理系统,其特征在于,所述分级时间轮是可被循环访问的数组,所述分级时间轮上设置的时间槽是所述数组的成员,所述时间槽内包括的定时器组成双向链表。
3.根据权利要求2所述的定时器管理系统,其特征在于,所述缓冲时间轮为1个,所述时间轮组和缓冲时间槽的个数N=4,每个所述时间轮组包括的分级时间轮的个数M=4。
4.根据权利要求2所述的定时器管理系统,其特征在于,所述缓冲时间轮为1个,所述时间轮组和缓冲时间槽的个数N=4,每个所述时间轮组包括的分级时间轮的个数M=5,所述时隙间隔为10毫秒,所述定时器的数量不大于600万个,所述定时器的定时时长范围是10毫秒至10分钟。
5.一种定时器管理方法,其特征在于,基于权利要求1所述的定时器管理系统,所述缓冲时间轮以主线程方式运行,所述N个时间轮组以N个独立的子线程方式运行,当所述缓冲时间轮以相同的时隙间隔循环运转到第k个缓冲时间槽时,所述主线程与第k个子线程相互协同对所述第k个时间轮组进行定时器管理,包括:
加入定时器,向所述第k个时间轮组添加新的定时器;
查找超时定时器,查找所述第k个时间轮组内的超时定时器;
删除定时器,将所述第k个时间轮组内的超时定时器删除。
6.根据权利要求5所述的定时器管理方法,其特征在于,所述加入定时器的方法是:
(1)若所述定时器的定时时长小于等于N个时隙间隔,则将所述定时器直接设置在所述缓冲时间轮的所述缓冲时间槽内,所述缓冲时间槽的序号k_num是:
(2)若所述定时器的定时时长大于N个时隙间隔,则将所述定时器设置在时间轮组中,所述时间轮组的序号c_num是:
并且,若所述时间轮组的分级时间轮的个数M=4,计算:
position[0]=t_exp%R0
若第3级时间轮没有运行到其中的第position[3]号时间槽,则将所述定时器设置在所述第3级时间轮的第position[3]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,并且,若第2级时间轮没有运行到其中的第position[2]号时间槽,则将所述定时器设置在所述第2级时间轮的第position[2]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,第2级时间轮运行到其中的第position[2]号时间槽,并且,若第1级时间轮没有运行到其中的第position[1]号时间槽,则将所述定时器设置在所述第1级时间轮的第position[1]号时间槽内;
若第3级时间轮运行到其中的第position[3]号时间槽,第2级时间轮运行到其中的第position[2]号时间槽,第1级时间轮运行到其中的第position[1]号时间槽,并且,若第0级时间轮没有运行到其中的第position[0]号时间槽,则将所述定时器设置在所述第0级时间轮的第position[0]号时间槽内;
其中,T_LENGTH表示所述定时时长,T_SLOT表示所述时隙间隔,P_CACHE则是所述缓冲时间轮段当前指针指向的缓冲时间槽的序号,%N表示除以N后求余数,T_NOW表示当前时刻,T_START表示所述定时器开始启动定时的时刻,符号表示向下取整,R0表示所述第0级时间轮的时间槽的个数,R1表示所述第1级时间轮的时间槽的个数,R2表示所述第2级时间轮的时间槽的个数,R3表示所述第3级时间轮的时间槽的个数。
7.根据权利要求6所述的定时器管理方法,其特征在于,所述查找超时定时器的方法是:
所述主线程在所述时隙间隔内对第k个缓冲时间槽内的超时定时器进行处理,处理结束后通知第k个子线程,由所述第k个子线程查找下一轮N个时隙间隔内第k个时间组轮中超时的定时器。
8.根据权利要求7所述的定时器管理方法,其特征在于,所述主线程包括:获取所述缓冲时间轮上所述第k个缓冲时间槽内的超时定时器;将所述超时定时器推送给处理模块处理;再通知所述第k号子线程;进入下一个缓冲时间槽。
9.根据权利要求8所述的定时器管理方法,其特征在于,所述通知所述第k号子线程包括:所述主线程对第k个信号量进行V操作。
10.根据权利要求9所述的定时器管理方法,其特征在于,所述第k个子线程包括:对所述第k个信号量进行P操作;将第0级时间轮的指针顺时针转动1格;判断所述第0级时间轮的指针是否指向第0号时间槽;
若指向第0号时间槽,则调整所述第k个时间轮组中高层级时间轮的指针,再将部分定时器从上一级时间轮的时间槽移动到下一级时间轮的时间槽,然后,将第0级时间轮指针指向的第0号时间槽内的超时定时器移到缓冲时间轮的第k号缓冲时间槽内,然后返回对第k个信号量进行下一次P操作;
若没有指向第0号时间槽,则直接将第0级时间轮指针指向的时间槽内的超时定时器移到缓冲时间轮的第k号缓冲时间槽内,然后返回对第k个信号量进行下一次P操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510262734.1A CN104951282A (zh) | 2015-05-21 | 2015-05-21 | 一种定时器管理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510262734.1A CN104951282A (zh) | 2015-05-21 | 2015-05-21 | 一种定时器管理系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104951282A true CN104951282A (zh) | 2015-09-30 |
Family
ID=54165956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510262734.1A Pending CN104951282A (zh) | 2015-05-21 | 2015-05-21 | 一种定时器管理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104951282A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126326A (zh) * | 2016-06-23 | 2016-11-16 | 东软集团股份有限公司 | 定时任务管理方法和装置 |
CN107844367A (zh) * | 2017-10-25 | 2018-03-27 | 上海斐讯数据通信技术有限公司 | 一种多任务的管理方法及系统 |
CN107870812A (zh) * | 2017-11-17 | 2018-04-03 | 南京国电南自轨道交通工程有限公司 | 一种基于单线程并发多定时器应用管理方法 |
CN108021439A (zh) * | 2016-10-31 | 2018-05-11 | 阿里巴巴集团控股有限公司 | 一种任务轮询方法、任务排布方法和相关装置 |
CN109254839A (zh) * | 2018-08-24 | 2019-01-22 | 上海哔哩哔哩科技有限公司 | 确定任务触发时间的方法、构建任务定时器的方法及系统 |
CN109360055A (zh) * | 2018-09-30 | 2019-02-19 | 江苏满运软件科技有限公司 | 基于时间轮的货源信息更新方法、系统、设备和存储介质 |
CN110502322A (zh) * | 2019-07-12 | 2019-11-26 | 苏宁云计算有限公司 | 定时调度的触发方法和装置 |
CN111309494A (zh) * | 2019-12-09 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种多线程事件处理组件 |
CN111782414A (zh) * | 2020-05-12 | 2020-10-16 | 北京皮尔布莱尼软件有限公司 | 一种延时消息处理方法及系统 |
CN113365084A (zh) * | 2021-05-12 | 2021-09-07 | 烽火通信科技股份有限公司 | 一种利用时间轮控制发送速度的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727352A (zh) * | 2009-12-15 | 2010-06-09 | 四川长虹电器股份有限公司 | 一种定时器的实现方法 |
CN102207888A (zh) * | 2011-05-09 | 2011-10-05 | 大唐移动通信设备有限公司 | 定时器管理方法和装置 |
CN102354257A (zh) * | 2011-07-13 | 2012-02-15 | 南京中兴软创科技股份有限公司 | 一种通讯平台的精确时钟管理方法 |
US20130067490A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Managing processes within suspend states and execution states |
CN103019805A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种多线程环境下定时器的设置方法 |
-
2015
- 2015-05-21 CN CN201510262734.1A patent/CN104951282A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727352A (zh) * | 2009-12-15 | 2010-06-09 | 四川长虹电器股份有限公司 | 一种定时器的实现方法 |
CN102207888A (zh) * | 2011-05-09 | 2011-10-05 | 大唐移动通信设备有限公司 | 定时器管理方法和装置 |
CN102354257A (zh) * | 2011-07-13 | 2012-02-15 | 南京中兴软创科技股份有限公司 | 一种通讯平台的精确时钟管理方法 |
US20130067490A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Managing processes within suspend states and execution states |
CN103019805A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种多线程环境下定时器的设置方法 |
Non-Patent Citations (1)
Title |
---|
陈志龙等: "基于多线程和缓存机制的定时器管理算法研究", 《2014第二届中国指挥控制大会论文集》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126326A (zh) * | 2016-06-23 | 2016-11-16 | 东软集团股份有限公司 | 定时任务管理方法和装置 |
CN108021439A (zh) * | 2016-10-31 | 2018-05-11 | 阿里巴巴集团控股有限公司 | 一种任务轮询方法、任务排布方法和相关装置 |
CN107844367A (zh) * | 2017-10-25 | 2018-03-27 | 上海斐讯数据通信技术有限公司 | 一种多任务的管理方法及系统 |
CN107870812A (zh) * | 2017-11-17 | 2018-04-03 | 南京国电南自轨道交通工程有限公司 | 一种基于单线程并发多定时器应用管理方法 |
CN107870812B (zh) * | 2017-11-17 | 2021-06-15 | 南京国电南自轨道交通工程有限公司 | 一种基于单线程并发多定时器应用管理方法 |
CN109254839A (zh) * | 2018-08-24 | 2019-01-22 | 上海哔哩哔哩科技有限公司 | 确定任务触发时间的方法、构建任务定时器的方法及系统 |
CN109254839B (zh) * | 2018-08-24 | 2021-08-06 | 上海哔哩哔哩科技有限公司 | 确定任务触发时间的方法、构建任务定时器的方法及系统 |
CN109360055A (zh) * | 2018-09-30 | 2019-02-19 | 江苏满运软件科技有限公司 | 基于时间轮的货源信息更新方法、系统、设备和存储介质 |
CN109360055B (zh) * | 2018-09-30 | 2020-12-29 | 江苏满运软件科技有限公司 | 基于时间轮的货源信息更新方法、系统、设备和存储介质 |
CN110502322B (zh) * | 2019-07-12 | 2022-07-12 | 苏宁云计算有限公司 | 定时调度的触发方法和装置 |
CN110502322A (zh) * | 2019-07-12 | 2019-11-26 | 苏宁云计算有限公司 | 定时调度的触发方法和装置 |
CN111309494A (zh) * | 2019-12-09 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种多线程事件处理组件 |
CN111782414A (zh) * | 2020-05-12 | 2020-10-16 | 北京皮尔布莱尼软件有限公司 | 一种延时消息处理方法及系统 |
CN111782414B (zh) * | 2020-05-12 | 2024-04-19 | 北京皮尔布莱尼软件有限公司 | 一种延时消息处理方法及系统 |
CN113365084B (zh) * | 2021-05-12 | 2022-06-10 | 烽火通信科技股份有限公司 | 一种利用时间轮控制发送速度的方法及装置 |
CN113365084A (zh) * | 2021-05-12 | 2021-09-07 | 烽火通信科技股份有限公司 | 一种利用时间轮控制发送速度的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951282A (zh) | 一种定时器管理系统及方法 | |
CN102968496B (zh) | 基于任务驱动和双缓冲机制的并行排序方法 | |
CN108197181B (zh) | 一种时序数据的压缩存储方法、电子设备及存储介质 | |
CN101344865B (zh) | 一种cpu占用率测量方法及装置 | |
CN102254024A (zh) | 海量数据处理系统及方法 | |
CN102193929A (zh) | 确定词信息熵及利用词信息熵的搜索方法及其设备 | |
CN103176974A (zh) | 优化数据库中访问路径的方法和装置 | |
CN103984560A (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN102918501A (zh) | 用于分析多线程应用的性能的方法和系统 | |
CN105653647B (zh) | Sql语句的信息采集方法及系统 | |
CN104732298A (zh) | 基于决策树和线性回归插值实现ems负荷预测的方法 | |
CN103793525A (zh) | 基于局部迭代的MapReduce模型的图结点的权威值计算方法 | |
CN110058882A (zh) | 一种用于cnn加速的opu指令集定义方法 | |
CN104537003A (zh) | 一种Hbase数据库的通用高性能数据写入方法 | |
CN103544111B (zh) | 一种基于实时性处理的混合基fft方法 | |
CN103049310A (zh) | 一种基于采样的多核模拟并行加速方法 | |
CN104991741A (zh) | 一种基于键值模型的情境适配电网大数据存储方法 | |
CN101079897B (zh) | 一种便于存储节点数量扩增的并行存储系统构造方法 | |
CN104536994A (zh) | 通用的数据迁移方法和装置 | |
CN110532319A (zh) | 一种分布式气象数据定时处理系统 | |
CN110008030A (zh) | 一种元数据访问的方法、系统及设备 | |
CN103593409A (zh) | 实时数据库检索方法及检索系统 | |
CN109558657B (zh) | 供电模式可靠性计算方法、装置、存储介质及计算设备 | |
CN103207936A (zh) | 一种基于空间缩减策略的序列采样算法 | |
CN102509177B (zh) | 一种基于云平台的局部加权线性回归预测运算的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150930 |
|
WD01 | Invention patent application deemed withdrawn after publication |