会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 家用器具 / 定时器 / 一种定时器调度方法

一种定时器调度方法

阅读:1039发布:2020-08-21

IPRDB可以提供一种定时器调度方法专利检索,专利查询,专利分析的服务。并且本发明公开了一种定时器调度方法,关键在于,设置基准定时器和用于定时器管理的稀疏矩阵,将需使用的定时器根据定时器时长放置于稀疏矩阵的相应位置,未放置定时器的位置稀疏矩阵元素置为零;每次基准定时器触发时,判断稀疏矩阵中对应当前时刻的矩阵元素值是否为零,如果不为零,则对该元素下的所有定时器执行超时处理;如果为零,则等待下一次基准定时器触发。采用该方法能在降低系统资源消耗的同时,提高定时器的管理和注册效率,且具有良好的时间扩展性。,下面是一种定时器调度方法专利的具体信息内容。

1、一种定时器调度方法,其特征在于,设置基准定时器和用于定时器管理的稀疏矩阵,将需使用的定时器根据定时器时长放置于稀疏矩阵的相应位置,未放置定时器的位置稀疏矩阵元素置为零;每次基准定时器超时时,判断稀疏矩阵中对应当前时刻的矩阵元素值是否为零,如果不为零,则对该元素下的所有定时器执行超时处理;如果为零,则等待下一次基准定时器超时; 其中,所述将定时器放置于稀疏矩阵的相应位置为:将所使用定时器的定时器时长与基准定时器时长之商除以稀疏矩阵的行数或列数得到的商和余数,分别作为所要放置的定时器在稀疏矩阵中的行、列坐标;之后,将所使用的定时器放置于稀疏矩阵中计算出的行、列坐标对应的元素下。

2、 根据权利要求l所述的方法,其特征在于,该方法进一步包括:在使用 定时器之前,由定时器系统创建定时器,并为所创建的定时器分配唯一的标识, 初始化定时器控制块信息的存储空间。

3、 根据权利要求2所述的方法,其特征在于,所述控制块信息包括定时器 标识、定时器状态、类型、时长、用户定义类型和参数。

4、 根据权利要求2所述的方法,其特征在于,该方法进一步包括:在使用 定时器之前,设定所使用定时器的定时器时长。

5、 根据权利要求l所述的方法,其特征在于,所述将所使用定时器的定时 器时长与基准定时器时长之商除以稀疏矩阵的行数或列数得到的商和余数,分 别作为所要放置的定时器在稀疏矩阵中的行、列坐标具体为:用所使用定时器的定时器时长与基准定时器时长之商除以稀疏矩阵的行 数,将所得到的余数作为行坐标,所得到的商作为列坐标;或者,用所使用定时器的定时器时长与基准定时器时长之商除以稀疏矩阵的列 数,将所得到的商作为行坐标,所得到的余数作为列坐标。

6、 根据权利要求4或5所述的方法,其特征在于,每次使用同 一定时器时, 设定的定时器时长不同。

7、 根据权利要求1至5任一项所述的方法,其特征在于,所述稀疏矩阵由 三元组表、带行表的三元组表、环形链表、十字链表实现。

8、 根据权利要求1至5任一项所述的方法,其特征在于,该方法进一步包 括:根据要使用定时器的定时器时长在稀疏矩阵中的相应位置添加要使用的定 时器;或者,根据要删除定时器的定时器时长从稀疏矩阵中的相应位置删除要删除的定 时器,并确定该位置是否还存在定时器,在不存在定时器时,将该位置的元素 值置为零;或者,根据要使用的新定时器的定时器时长在稀疏矩阵中的相应位置添加要使用 的定时器,根据原定时器的定时器时长从稀疏矩阵中的相应位置删除该定时器, 并确定原定时器所在位置是否还存在定时器,在不存在定时器时,将该位置的 元素值置为零。

9、 根据权利要求1至5任一项所述的方法,其特征在于,该方法进一步包 括:设置校准定时器,校准定时器触发时,根据实际处理状态和理想处理状态 的差异调整稀疏矩阵中定时器的位置。

说明书全文

一种定时器调度方法

技术领域

本发明涉及定时器技术,特别是涉及一种定时器的调度管理方法。 背景技术
目前,在很多需要异步执行若干操作的系统中,比如:异步执行多个任务 的软件系统,异步实现特定服务功能的网络通信系统等等,都需要利用定时器 对各个操作进行同步和管理。譬如,在网络通信系统中,有时为了给一个用户 提供某项特定功能服务,会使用到几个、十几个甚至更多的定时器。
在实际操作中,由于任务或动作的级别不同,对定时器的要求也有所不同。 以软件系统为例,首先,对时间精度的要求不同。处于系统核心级别的任务时 间精度要求在IO亳秒级别,而处于用户级别或业务级别的任务时间精度要求在 100毫秒级别。其次,对数量的要求不同。系统核心任务只需要几个或十几个
定时器,而用户级别或业务级别通常需要成百上千甚至十万级别数量的定时器。 对于定时器的管理,从实现方式上来看,定时器通常被设计为单一的模式。 即:在整个系统中,定时器的功能在一个单一模块中实现,系统中所有的定时 请求都由这个模块来完成。并且,为了保证定时功能的准确性,通常会给定时 模块对应的任务设计较高优先级,但这种方法存在较髙优先级需要消耗更多资 源的问题。在提供大量定时服务时,这个问题将会尤为突出,甚至会因为业务 级别的任务影响到通讯系统核心任务的稳定和安全,特别是在电信级别的系统 上更加不允许这种情况出现。
从调度方法来看,定时器通常包括以下几种类型: 第一种是线性模式,这种模式下,定时器系统预先申请连续空间作为管理 结构,每个逻辑空间间隔和其所代表的时间间隔存在着线性的关系。所申请的
连续空间可采用数组、队列、栈等方式实现,以数组为例,数组的每个元素代
表一个特定的超时时间,比如10毫秒。那么,需要用到10亳秒、20亳秒、50 毫秒、80亳秒定时器时,则组织成如图l所示的管理结构。在这种模式下添加 定时器,就是将定时器添加到相应数组元素下,比如:添加30毫秒的定时器, 就将定时器添加到数组的第四个元素下。并且,在每个计时周期,向前移动一 个元素,对当前元素下的所有定时器执行超时处理,如果到达最后一个元素则 循环回第一个元素重新开始。
这种模式的定时器管理结构是一个线性的环状结构,每次添加定时器时可 直接通过计算确定添加的位置,因此,在定时器注册和系统管理方面的处理简 单且高效,时间利用率高。但是,这种模式最显著的问题就是:空间利用率低, 导致时间上扩展性差。
第二种是非线性模式,这种模式下,所有的定时器按照超时时间的先后顺 序排成一个顺序链表或者其它类似形式。其中,每个元素的逻辑空间间隔和其 所代表的时间间隔不存在线性关系。那么,需要用到10毫秒、20亳秒、50亳 秒、80毫秒定时器时,则组织成如图2所示的管理结构。以链表为例,在每个 计时周期,检查链表的头节点是否超时,如果超时,则执行超时处理程序;如 果没有超时,则等待进入下一个计时周期。
这种模式解决了时间上扩展的问题,但是,由于每次添加定时器都需要从 表头一个一个查找才能确定添加位置,因此,定时器注册的效率不高,尤其在 管理大量定时器时会产生效率瓶颈。
第三种是利用二叉树等数据结构来组织定时器,将定时器按超时时间大小 组织成如图3所示的管理结构,由于左子树的超时时间均小于右子树的超时时 间,每次添加定时器时可通过折半查找的方式确定添加位置,如此,能提高定 时器注册效率。
这种模式以牺牲空间的利用率来提高时间的利用率,从理论分析上可以提 高平均的效率。但在实际的使用中,由于定时器时间分布不可能成为平均分布, 绝大多数情况下定时器都是时长较短的,这样二叉树的查找效率并不一定比顺
序链表高,所以效果并不理想。 发明内容
有鉴于此,本发明的主要目的在于提供一种定时器调度方法,在降低系统 资源消耗的同时,提高定时器的管理和注册效率,且具有良好的时间扩展性。 为达到上述目的,本发明的技术方案是这样实现的:
一种定时器调度方法,关键在于:设置基准定时器和用于定时器管理的稀 疏矩阵,将需使用的定时器根据定时器时长放置于稀疏矩阵的相应位置,未放 置定时器的位置稀疏矩阵元素置为零;每次基准定时器超时时,判断稀疏矩阵 中对应当前时刻的矩阵元素值是否为零,如果不为零,则对该元素下的所有定 时器执行超时处理;如果为零,则等待下一次基准定时器超时;
其中,所述将定时器放置于稀疏矩阵的相应位置为:将所使用定时器的定 时器时长与基准定时器时长之商除以稀疏矩阵的行数或列数得到的商和余数, 分别作为所要放置的定时器在稀疏矩阵中的行、列坐标;之后,将所使用的定 时器放置于稀疏矩阵中计算出的行、列坐标对应的元素下。
具体的:用所使用定时器的定时器时长与基准定时器时长之商除以稀疏矩 阵的行数,将所得到的余数作为行坐标,所得到的商作为列坐标;或者,用所 使用定时器的定时器时长与基准定时器时长之商除以稀疏矩阵的列数,将所得 到的商作为行坐标,所得到的余数作为列坐标。每次使用同一定时器时,设定 的定时器时长不同。
该方法进一步包括:在使用定时器之前,由定时器系统创建定时器,并为 所创建的定时器分配唯一的标识,初始化定时器控制块信息的存储空间。其中, 所述控制块信息包括定时器标识、定时器状态、类型、时长、用户定义类型和 参数。
该方法进一步包括:在使用定时器之前,设定所使用定时器的定时器时长。 上述方案中,所述稀疏矩阵由三元组表、带行表的三元组表、环形链表、 十字链表实现。
该方法进一步包括:根据要使用定时器的定时器时长在稀疏矩阵中的相应
位置添加要使用的定时器;或者,根据要删除定时器的定时器时长从稀疏矩阵 中的相应位置删除要删除的定时器,并确定该位置是否还存在定时器,在不存
在定时器时,将该位置的元素值置为零;或者,根据要使用的新定时器的定时 器时长在稀疏矩阵中的相应位置添加要使用的定时器,根据原定时器的定时器 时长从稀疏矩阵中的相应位置删除该定时器,并确定原定时器所在位置是否还 存在定时器,在不存在定时器时,将该位置的元素值置为零。
该方法进一步包括:设置校准定时器,校准定时器触发时,根据实际处理 状态和理想处理状态的差异调整稀疏矩阵中定时器的位置。
本发明所提供的定时器调度方法,仅向当前应用系统注册一个基准定时器, 其它所有需要使用的定时器全部由定时器系统来创建、调度、管理,向系统注 册的基准定时器用于驱动定时器系统对超时定时器进行超时处理,以完成大容 量的定时服务。本发明方法具有以下优点和特点:
1) 本发明的方法只向当前应用系统注册一个基准定时器,与现有技术中所 有定时器都必须向应用系统注册的做法不同,因此可保证时间利用率,且在保 证定时器准确性和较高运行级别的情况下,不仅减少系统对定时器任务的执行 时间,还将定时器对系统核心的需求减少到一个定时器的资源占用,减少了超 时处理的资源开销和任务之间的通讯开销,增强了整个软件系统或通讯系统的 稳定性。
2) 本发明所述定时器是基于软件实现的定时器,可满足各种不同场合和平 台的应用需要,尤其是在大并发量的、对应不同高低精度的大跨度的定时器应 用场合中,具有很大的灵活性、良好的可测试性和可维护性。同时,在资源开 销和执行效率方面得到较大的提升。
3) 本发明的基准定时器可以使用系统核心提供的定时器,或者以中断形式 提供的定时功能,如此可为定时器系统提供高度灵活性。
4) 本发明的定时器管理结合了线性模式和非线性模式优势,由于时间间隔 较短的定时器在使用中占绝大多数,因此将时间间隔较短的定时器组织在一个 线性的结构中,在定时器注册时实现髙效率;并且,将时间间隔较长的由非线
性的结构管理,提供良好的时间扩展性。随着时间的变化,原来时间间隔较长 的定时器还可在适当的时候,自动从非线性的结构中转换到线性的结构中。显 然,本发明的调度方法可将定时器处理效率保持在线性模式的水平上,进而提 升整个定时器系统的处理效率。
5) 本发明方法中采用稀疏矩阵的方式作为定时器的管理结构,可以采用多
种形式具体实现,比如:采用环形链表、十字链表等等,实现起来简单、方便、灵活。
6) 本发明方法可通过将定时器系统实例化的方式具体实现,并可釆用基准 定时器触发实例化后的定时器系统,如此,可提高定时器的管理效率和定时器 注册处理效率;且系统中每个任务的定时服务都由实例化的定时器系统来承担, 将为用户或业务任务提供定时服务所消耗的资源从系统核心部分分离出来,降 低了对系统核心部分的依赖。
7) 本发明方法采用实例化的定时器系统实现时,能隔离不同用户或业务任 务的定时服务,使之不会相互干扰,也相应避免了这些任务之间的同步开销, 提高了整体系统的运作效率,能支持数量巨大的定时器处理。
8) 本发明对于时间间隔较长、定时精度要求较髙的应用,进一步在定时器 系统中加入动态补偿机制,以弥补间隔较长的定时器存在的误差。

附图说明

图1为现有技术中线性模式下定时器的管理结构示意图;
图2为现有技术中非线性模式下定时器的管理结构示意图;
图3为现有技术中采用二叉树结构管理定时器的管理结构示意图;
图4为本发明中采用稀疏矩阵管理定时器的管理结构示意图;
图5为本发明方法具体实施例的实现原理图。

具体实施方式

本发明的基本思想是:设置基准定时器和用于定时器管理的稀疏矩阵,将
用户或业务使用到的定时器根据定时器时长放置于稀疏矩阵的相应位置,未放 置定时器的位置稀疏矩阵元素置为零;每次基准定时器超时时,判断稀疏矩阵 中对应当前时刻的矩阵元素值是否为零,如果不为零,说明此位置包含有定时
器,则对该元素下的所有定时器执行超时处理;如果为零,则等待下一次基准
定时器超时触发。
这里,基准定时器为一个固定时长的定时器,基准定时器是向当前应用系 统核心部分注册的,该基准定时器以固定时间间隔重复触发。所述稀疏矩阵是 根据用户或业务实际使用的定时器数目创建的、用于定时器管理的数据结构。
所述放置于稀疏矩阵中的定时器为用户或业务要使用到的定时器,由定时 器系统创建,每个定时器在创建时会被分配一个标识,该标识能区分对哪个定 时器进行操作,唯一标识每个定时器。在创建之后对每个定时器的所有搡作中,
如:注册、停止、删除等,都需要将相应定时器的标识发送给定时器系统。通 常,在使用定时服务之前,定时器系统会为每个定时服务先创建一个或一个以 上定时器,在创建每个定时器时分配并初始化定时器的相关资源,然后将定时 器标识返回给用户。其中,所述定时器系统是指用于创建、管理、调度定时器, 完成本发明定时器调度方法的软件模块,可以通过实例化等不同方式具体实现; 所述相关资源是指定时器控制块信息的存储空间;所述控制块信息包括定时器 标识、定时器状态、类型、时长、用户定义类型和参数等信息。
定时器在初始创建时,只是创建了一个数据结构,定时器时长并未确定, 所以新创建的定时器并不添加到稀疏矩阵中。当用户或业务使用某个定时器时, 则设定所使用定时器的定时器时长并启动该定时器,同时,定时器系统根据所 设定的定时器时长将相应定时器添加到稀疏矩阵中对应的位置,即放置在稀疏 矩阵中相应的元素下,比如:以稀疏矩阵中相应元素为链表头生成链表,每个 定时器对应一个链表节点,挂在链表头之后,具体的行列坐标值与定时器时长 相关;矩阵中的零元素位置表示没有用到相应时长的定时器。对于每个创建的 定时器,可以多次启动,且每次可以设定不同的定时器时长,但多次启动不能 同时进行,也就是说,下一次启动必须在上一次启动的定时器操作完成后才能
开始。定时器搡作完成一般有两种方式: 一种是定时器超时,并完成超时处理 之后;另一种是用户主动停止定时器。
通常,定时器系统在实现定时器的创建、调度、管理之前,还需设置定时 器中用户任务信息,包括任务标识、超时处理方法等信息,将收到的定时器消 息或中断交由定时器系统来处理。
本发明定时器的调度方法可以通过不同的方式实现,比如:将定时器系统 实例化,采用实例化后的定时器系统完成对所有定时器的创建、管理和调度。 实例化的定时器系统由基准定时器触发,并且,采用稀疏矩阵作为定时器管理
结构。这里,所谓将定时器系统实例化就是:将所有定时服务按照属性划分为 一类或几类对象,譬如:按照定时器时长或定时器应用场合等属性划分,对每 类对象按预定的策略进行统一地管理。每个任务需要用到定时服务时,就向实 例化后的定时器系统申请,实例化后的定时器系统创建定时器,在使用时设定 定时器时长,并将所使用的定时器根据定时器时长放置于稀疏矩阵中。以下均 以实例化定时器系统的方式实现本发明定时器调度方法为例进行说明。
在具体实现中,定时器系统所采用的稀疏矩阵也存在不同的设计方式,比 如:行数固定、列数可扩展,或是列数固定、行数可扩展等等。假定矩阵的行 坐标为i,列坐标为j,基准定时器时长为To,超时时间为T,则采用行数固定、 列数可扩展的稀疏矩阵时,超时时间与行列坐标满足公式(1)的关系:
T= (jx行数+i) xTo (1)
釆用列数固定、行数可扩展的稀疏矩阵时,超时时间与行列坐标满足公式(2) 的关系:
T- (ix列数+j) xT。 (2) 当然,具体行数或列数固定为多少, 一般要根据具体的应用来确定,与基准定 时器时长的大小以及所用到的定时器最大时长都有关系。
相应的,在初始构造稀疏矩阵或将新注册定时器的值放置到稀疏矩阵时, 定时器在稀疏矩阵的放置位置可通过新注册定时器的时长、基准定时器时长和 行数/列数计算得出。当采用行数固定、列数可扩展的稀疏矩阵时,新注册定时
器在稀疏矩阵中的行、列坐标通过公式(3)i+算得出;当釆用列数固定、行数 可扩展的稀疏矩阵时,新注册定时器在稀疏矩阵中的行、列坐标通过公式(4) 计算得出:
(定时器时长+基准定时器时长)+行数 (3) (定时器时长十基准定时器时长)十列数 (4) 其中,对于行数固定的情况,公式(3)得到的余数为行坐标,公式(3)得到 的商为列坐标;对于列数固定的情况,公式(4)得到的商为行坐标,公式(4) 得到的余数为列坐标。
举个具体例子,假设:当前向实例化的定时器系统注册的定时器有20ms、 40ms、 50ms、 80ms、 100ms、 120ms和150ms的定时器,基准定时器为10ms 定时器,行数固定为5行,则可构造出如图4所示的5行4列的稀疏矩阵。其 中,第l行第1列元素的行列坐标为(0, 0),那么,根据公式(3)计算,20ms 的定时器放置在第3行第1列,行列坐标为(2, 0); 50ms的定时器放置在第 l行第2列,行列坐标为(0, 1),其它定时器的行列坐标依此类推。当然,此 稀疏矩阵也可以构造为3行6列、4行4列等等,只要能容纳下所有可能用到 的定时器即可。
稀疏矩阵构造好后,每次基准定时器触发时,定时器系统就判断稀疏矩阵 中对应当前时刻的矩阵元素值是否为非零值,如果是非零值,则定时器系统确 定对超时的处理方式,并采用所确定的方式对相应定时器执行超时处理;如果 是零,则等待下一次基准定时器触发。
定时器系统可以按行优先或列优先的方式对稀疏矩阵中的定时器进行访 问, 一般,行数固定时,定时器系统以列优先方式访问;列数固定时,定时器 系统以行优先方式访问。从逻辑上看,访问过程是一个螺旋前进的过程,如果 矩阵相应元素下有定时器,就进行超时处理;如果没有,则等待下一次基准定 时器触发。
定时器系统在完成超时判断和超时处理操作的同时,或者在每次基准定时 器触发间隔中,还进一步完成定时器的更新操作,包括定时器的添加、删除和
修改。其中,所述添加就是:定时器系统判断是否有新注册的定时器,如果有, 则根据新注册定时器的时长、基准定时器的时长以及稀疏矩阵的行数/列数计算 定时器放置的行、列坐标,然后将新注册定时器值放置到稀疏矩阵中的相应位 置上。通常可在稀疏矩阵的相应位置设置链表、或数组、或其它类似的数据结 抅,每个定时器对应数据结构中的一个节点,将定时器的控制块信息存储于相 应节点中,其中控制块信息包括定时器标识、状态、类型、时长、用户定义类 型和参数。添加时,如果相应位置上原矩阵元素值为零,则创建一个数据结构
节点,比如创建链表节点,将该矩阵元素作为链表头,指向所创建的节点;如
果相应位置上原矩阵元素值不为零,则创建数据结构节点,比如创建链表节点, 之后将所创建的节点插入到链表尾部,所创建的节点中存储有相应定时器的控 制块信息。
相应的,所述删除就是:定时器系统判断是否有用户或任务指令要删除的 定时器,如果有,则根据要删除定时器的标识得到定时器的控制块信息,然后 将稀疏矩阵中相应位置上的定时器删除,如果该矩阵元素下没有其它定时器则 将元素值置为零。
所述修改就是:定时器系统判断是否有用户或任务指令要修改的定时器, 如果有,则根据要修改定时器的标识得到定时器的控制块信息,根据新定时器 的时长、基准定时器的时长以及稀疏矩阵的行数/列数,计算出要修改定时器新 的行、列坐标,然后将稀疏矩阵中原行、列坐标上的定时器删除,并在新行、 列坐标的位置上放置修改后的定时器,如果原定时器所在矩阵元素下没有其它 定时器,则将相应矩阵元素的值置为零。这里,将新定时器放置在新行、列坐 标的位置上具体操作是:如果新行、列坐标位置上原矩阵元素值为零,则放置 是创建数据结构节点,比如创建链表节点,将该矩阵元素作为链表头,指向所 创建的节点;如果新行、列坐标位置上原矩阵元素值不为零,则放置是创建数 据结构节点,比如创建链表节点,然后将所创建的节点插入到链表尾部,所创 建的节点中存储有相应定时器的控制块信息。
在实际应用中,稀疏矩阵的具体实现方案可以有很多种形式,比如:三元
组表、带行表的三元组表、环形链表、十字链表等等。下面以采用环形链表实 现稀疏矩阵为例,详细说明本发明定时器调度方法的实现过程。并且,在下述 实施例中,以行数固定、列数可扩展的稀疏矩阵为例,对于列数固定、行数可 扩展的稀疏矩阵的实现原理基本相同。
如图5所示,构造一个环形链表,链表上每个节点的值为基准定时器时长 的整数倍,环中节点的数量通常根据具体的应用场景来确定的。 一般情况下,
环的长度应能容纳95%的定时器。举例来说,在网络的一个典型呼叫过程中, 可能用到0.5s、 ls、 2s、 4s、 8s、 16s、 32s和大于3分钟等长度的定时器,但其 中大于32秒的定时器很少用到,则可将环的长度定为能容纳32秒定时器的长 度。比如:为保证平均误差小于5%,设置基准定时器时长为O.ls,环上设置 320个节点。当然,也可以设置基准定时器时长为0.25s、 0.5s等。
如果考虑到资源占用最少的原则, 一般会以最小定时器时长或所有定时器 时长的最大公约数为基准定时器时长。当然,在大多数情况下,最小定时器时 长与所有定时器时长的最大公约数是相等的。如果对定时器误差有要求,则基 准定时器时长可以由公式(5)得出:
基准定时器时长=最小定时器时长x平均误差(% ) x4 (5)
通常,将时间较短的定时器作为环上的节点,将时间较长的定时器作为环 延伸出的链表中的节点,环上的节点数目根据所有定时器中最大定时器时长以 及基准定时器时长来设定,以此提高空间利用率和时间扩展性。
图5中,环上每个节点(RNode, Ring Node)是一个链表头,每个RNode 对应稀疏矩阵的一行,且每个RNode中存储有行坐标i值,也称为环索引(Ring Index)。如果某个RNode的指针为空,则说明稀疏矩阵中此行的所有元素均为 零,如果某个RNode的指针指向一个圏节点链表,则说明稀疏矩阵中此行存在 非零元素值,且RNode指针所指向链表中的每个节点(LNode, Loop Node ) 分别表示稀疏矩阵中此行的第几列为非零元素,每个LNode中存储有列坐标j 值,也称为圈索引(Lo叩Index),每个LNode又为定时器节点链表(Timer Node List)头,定时器节点链表中的每个节点(TNode, TimerNode)对应一个定时 器,每个TNode中存储一个特定的超时时间,该超时时间即为定时器时长。
本实施例中,在所有任务使用定时服务之前,需要先将定时器系统实例化, 向核心系统或核心任务注册一个基准定时器,申请定时器系统资源,并根据所 有要用到的定时器建立环形链表。另外,还需要初始化定时器系统状态信息、 用户任务信息、统计信息等。这里,所述建立环形链表就是构造稀疏矩阵,环 上RNode的个数就是行数,每个RNode对应一行,RNode中指针指向的链表 上的每个LNode代表当前行中非零元素值对应的列。环指针从起始节点逐节点 向前移动直到最后一个节点再返回起始节点为移动一圈,就相当于超时一圈, 列值就等于超时的圈数,比如:第l列为超时l圏,表示环指针移动一圏;第 2列为超时2圈,表示环指针移动两圈,以此类推。
从环上的起始节点开始,每次基准定时器超时的时候,环指针向前移动到 下一个节点,并在当前RNode所指向的链表中查找是否有等于当前圏数的 LNode存在,如果有LNode存在,则将相应的LNode从链表上取下,并对 LNode指向的定时器链表中的每个节点做超时处理;如果没有LNode存在,则 表明在该时间点上没有定时器超时,不需要做任何超时处理,那么,定时器系 统就等待下一次的基准定时器超时。由于LNode所构成的链表是按顺序排列的, 所以只需判断链表中第 一 个LNode的值即可。
在定时器启动时,即需要添加定时器节点时,首先,根据TNode的超时时 间计算出对应LNode的环索引和圈索引,即:计算出当前定时器在稀疏矩阵中 的行、列坐标,计算公式如下: 环索引=(当前处理的环节点(Cuirent Ring Index ) +超时时间间隔)%环中元素个数 圈索引=(当前处理的环节点(Current Ring Index) +超时时间间隔)+环中元素个数+ 当前处理的圈数
其中,%代表取模运算,所述超时时间间隔为当前定时器的超时时间除以基准 定时器时长。
然后,在环索引对应的RNode指向的圏节点链表中査找相应的LNode, 如果已经存在于链表中,则将TNode添加到该节点的定时器节点链表中;如果
链表中不存在,则先添加对应的LNode,再添加到节点的TNodeLst中。
通过上述过程可以看出,本发明的定时器由软件形式实现,因此可通过软 件的测试方法来对这类定时器进行调试,具有良好的可测试性和可维护性。并 且,基于稀疏矩阵的定时器调度方式是线性和非线性互补的模式,使定时器系 统在空间效率和时间效率得到很好的平衡,并且具有很好的灵活性和扩展性。
由于超时处理以及其它操作会产生一定的时间开销,且用户或业务任务的 优先级较低,所以间隔较长的定时器存在误差。基于此,本发明进一步提出一 种优化方案,在时间间隔较长、定时精度要求较高的应用中,在定时器系统中 加入动态补偿机制,以弥补间隔较长的定时器存在的误差。所述动态补偿机制 可以有多种实现方式,例如:除基准定时器之外,实例化定时器系统时再向系 统额外注册一个时间较长的校准定时器,比如注册一个环长度整数倍的校准定 时器。那么,当校准定时器触发时,可以根据实际处理状态和理想处理状态的 差异进行调整,比如:比较实际处理节点数和理想处理节点数,根据比较结果 对定时器系统中定时器的位置做相应调整。其中,理想处理节点数可根据公式 (6)计算得到:
理想处理节点数=校准定时器时长+基准定时器时长 (6) 由于一般情况下,实际处理的节点数会小于理想处理节点数,且这个误差 只会对时长较长的定时器有比较明显的影响。因此,这里所述的对定时器系统 中的定时器位置做相应调整是指:当校准定时器超时的时候,检查那些处于链 表末端的、定时器时长大于校准定时器时长的定时器,将其提前(理想处理节 点数-实际处理节点数)。
以上所述仅为本发明的较佳实施例而已,其目的在于说明本发明的基本实 现原理,以帮助本领域技术人员理解本发明的实质,并非用于限定本发明的保 护范围,凡是本领域技术人员按照本发明的技术特征所作的其它等效变换,均 应包括在本发明专利申请的保护范围内。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用