定时方法

文档序号:6336791阅读:505来源:国知局
专利名称:定时方法
技术领域
本发明涉及嵌入式软件开发领域,尤其是涉及该领域中的定时方法和装置。
背景技术
在软件开发过程中,很多软件模块需要用到定时器。现有技术中存在多种不同的操作系统,且每个操作系统中的定时器均依赖于本系统的信号触发及处理,并且,对于依赖本系统的定时器而言,每个进程中能够使用的定时器数目是固定的,因此,定时器除受信号的限制外,还受到进程中定时器数目的限制。例如,在Linux操作系统中,主要使用三种定时器,分别是alarm ()、P0SIX:XSI间隔定时器setitimer (),POSIX TMR间隔定时器timer_ create (),这些定时器都建立在Linux操作系统的信号触发、处理的基础上,并且有定时器个数和信号的限制。

发明内容
本发明提供一种定时方法,用以解决现有技术中存在定时器受到所在操作系统的信号的限制,以及每个进程中定时器数目的限制的问题,包括接收软件模块发送的定时器调用请求;为所述软件模块分配空闲的定时器,并利用被分配的定时器进行计时;当所述被分配的定时器的计时时间到达对应的预设定时时间时,向所述软件模块发送定时器到时消息。较佳的,向所述软件模块发送定时器到时消息之后,还包括将所述被分配的定时器恢复为空闲状态,并释放所述被分配的定时器占用的资源。较佳的,所述利用被分配的定时器进行计时,包括获取所述被分配的定时器的预设定时时间,并确定时钟滴答数组中游标当前指向的第一成员,所述成员代表设定的时间长度值;根据所述预设定时时间,估测所述被分配的定时器的计时时间到达所述预设定时时间时所述游标指向的第二成员,并将所述被分配的定时器挂载到所述第二成员下;根据所述预设定时时间,预测所述游标遍历所述时钟滴答数组的次数N,其中,N 等于所述预设定时时间与所述时钟滴答数组的总时长的比值向下取整;移动所述游标进行计时,当所述游标第N+1次移动到指向第二成员时,所述被分配的定时器的计时时间到达所述预设定时时间。较佳的,还包括当所述时钟滴答数组的一个成员下挂载至少一个定时器时,采用双向链表方式将该成员下的至少一个定时器的标识串联;在所述双向链表中,每个定时器的标识对应一前置变量WPreNode和一后置变量 wNextNode,其中,所述wPreNode用于指向该标识标志的定时器的前一个定时器的标识,所述WNextNode用于指向该标识标志的定时器的后一个定时器的标识。
较佳的,还包括在已挂载至少一个定时器的成员下增加定时器时,将增加的定时器的标识放到所述双向链表的表头,利用所述增加的定时器的标识的后置变量链接所述双向链表的原表头对应的定时器的标识。较佳的,所述为所述软件模块分配定时器,包括在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,所述定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员;根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器;将确定的空闲的定时器分配给所述软件模块。较佳的,所述空闲结点表具有指向所述空闲结点表表头的头变量wFreeHead和指向所述空闲结点表表尾的尾变量wFreeTail,且当所述wFreeHead和所述wFreehil指向的成员的数值均大于所述存储数组的最大值时,设置所述WFreeHead和所述wFreeTail返回并指向所述存储数组的第一位成员;为所述软件模块分配一个空闲的定时器之后,设置所述wFreeHead在所述存储数组中后移一位;释放一个被分配的定时器占用的资源之后,设置所述WFreeTail在所述存储数组中后移一位。较佳的,还包括当所述被分配的定时器的计时时间未到达对应的预设定时时间时,接收定时器取消请求,通知被分配的定时器停止计时。本发明还提供了一种定时装置,用以解决现有技术中存在定时器受到所在操作系统的信号的限制,以及每个进程中定时器数目的限制的问题,包括接收模块,用于接收软件模块发送的定时器调用请求;分配模块,用于为所述软件模块分配空闲的定时器,并利用被分配的定时器进行计时;发送模块,用于当所述被分配的定时器的计时时间到达对应的预设定时时间时, 向所述软件模块发送定时器到时消息。较佳的,还包括释放模块,用于向所述软件模块发送定时器到时消息之后,将所述被分配的定时器恢复为空闲状态,并释放所述被分配的定时器占用的资源。较佳的,所述分配模块包括获取子模块,用于获取所述被分配的定时器的预设定时时间,并确定时钟滴答数组中游标当前指向的第一成员,所述成员代表设定的时间长度值;估测子模块,用于估测所述被分配的定时器的计时时间到达所述预设定时时间时所述游标指向的第二成员,并将所述被分配的定时器挂载到所述第二成员下;预测子模块,用于根据所述预设定时时间,预测所述游标遍历所述时钟滴答数组的次数N,其中,N为> 0的整数,且N等于所述预设定时时间与所述时钟滴答数组的总时长的比值向下取整;
计时子模块,用于移动所述游标进行计时,当所述游标第N+1次移动到指向第二成员时,所述被分配的定时器的计时时间到达所述预设定时时间。较佳的,所述分配模块还包括串联子模块,用于当所述时钟滴答数组的一个成员下挂载至少一个定时器时,采用双向链表方式将该成员下的至少一个定时器的标识串联;在所述双向链表中,每个定时器的标识对应一前置变量wPreNode和一后置变量wNextNode,其中,所述wPreNode用于指向该标识标志的定时器的前一个定时器的标识,所述WNextNode用于指向该标识标志的定时器的后一个定时器的标识。较佳的,所述分配模块包括查询子模块,用于在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,所述定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员;确定子模块,用于根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器;分配子模块,用于将确定的空闲的定时器分配给所述软件模块。采用本发明,根据软件模块的定时器调用请求分配空闲的定时器,而不是使用所在操作系统自带的定时器进行计时,当被分配的定时器的计时时间到达对应的预设定时时间时,向软件模块发送定时器到时消息,能够避免了操作系统自带定时器依赖于本系统的信号触发及处理、受到本系统信号的限制,以及受到进程中定时器数目的限制,以及,不影响软件模块自身的信号触发及处理,也不会影响软件模块正在处理的进程,避免进程执行过程中信号突然中止的问题。


图1为本发明实施例提供的定时方法的流程图;图2为本发明实施例提供的利用被分配的定时器进行计时的流程图;图3为本发明实施例提供的时钟滴答数组的结构示意图;图4为本发明实施例提供的定时器利用时钟滴答数组进行计时的示意图;图5为本发明实施例提供的双向链表的结构示意图;图6为本发明实施例提供的定时器共享内存的结构示意图;图7为本发明实施例提供的空闲结点表的结构示意图;图8为本发明实施例提供的定时器计时及到时后的处理流程图;图9为本发明实施例提供的利用空闲结点表管理空闲的定时器的流程图;图10为本发明实施例提供的定时器到达预设定时时间或者被取消后的处理流程图;图11为本发明实施例提供的第一种定时装置的结构示意图;图12为本发明实施例提供的第二种定时装置的结构示意图;图13为本发明实施例提供的第一种分配模块的结构示意图;图14为本发明实施例提供的第二种分配模块的结构示意图;图15为本发明实施例提供的第三种分配模块的结构示意图16为本发明实施例提供的第四种分配模块的结构示意图;图17为本发明实施例提供的查询子模块的结构示意图;图18为本发明实施例提供的第三种定时装置的结构示意图。
具体实施例方式为解决现有技术提到的,定时器依赖于所在操作系统,受到所在操作系统的信号限制,以及受到每个进程中定时器数目的限制的问题,本发明实施例提供了一种定时方法, 具体处理流程如图1所示,包括步骤101、接收软件模块发送的定时器调用请求;步骤102、为软件模块分配空闲的定时器,并利用被分配的定时器进行计时;步骤103、当被分配的定时器的计时时间到达对应的预设定时时间时,向软件模块发送定时器到时消息。在本发明实施例中,步骤103在实施之后,被分配的定时器停止计时,并将被分配的定时器恢复为空闲状态,释放其占用的资源,以便利用释放的资源为其他软件模块分配定时器。在一个实施例中,如图1所示流程,步骤102在实施时,利用被分配的定时器进行计时,计时方式可以有多种,例如,利用链表方式进行计时,也可以利用数组方式进行计时, 其中,链表或数组的任意两个成员之间可代表设定的时间长度值。现以时钟滴答数组为例进行说明,此时,利用被分配的定时器进行计时的具体处理流程如图2所示,包括步骤201、获取被分配的定时器的预设定时时间,并确定时钟滴答数组中游标当前指向的第一成员;步骤202、根据预设定时时间,估测被分配的定时器的计时时间到达预设定时时间时所述游标指向的第二成员,并将被分配的定时器挂载到第二成员下;步骤203、根据预设定时时间,预测游标遍历时钟滴答数组的次数N,其中,N等于预设定时时间与时钟滴答数组的总时长的比值向下取整;步骤204、移动游标进行计时,当游标第N+1次移动到指向第二成员时,被分配的定时器的计时时间到达预设定时时间。在本例中,时钟滴答数组的大小T IMER_MAX_TMCB_NUM是可以配置的,当然, TIMER_MAX_TMCB_NUM只能够取彡0的整数,例如,TIMER_MAX_TMCB_NUM可以取值为30000。 实施时,时钟滴答数组中每个成员代表一个已预先设定的时间段,各个成员的位置序号按顺序依次为0-(TIMER_MAX_TMCB_NUM_l),在时钟滴答数组中有一个游标wkanPos指向数组中的某个成员,代表当前所处的时间,具体结构如图3所示。当计时的时间到达游标当前所指成员代表的时间段时,游标指向该成员的下一个成员。游标每走一步的时间是通过延时函数来实现,例如在Iinux操作系统中使用usle^O函数时间。通常将被被分配的定时器挂载到其到时时刻对应的时钟滴答数组成员下,当游标移动到指向该成员时,就代表了该定时器到时。实施时,每个成员代表的已设定的时间段 USP_OSS_TIMER_SLEEP (后文可简称TIMER_SLEEP)可以是相同的,也可以是不同的,根据实际情况而定,例如,在时钟滴答数组中,每个成员都代表10ms,也可以设置为第一个成员代表10ms,第二个成员代表5ms,第三个成员代表7ms,等等。现以一个具体实施例进行说明,在本例中,TIMER_MAX_TMCB_NUM取值30000,时钟滴答数组中每个成员代表10ms,为软件模块分配了一个预设定时时间为30ms的定时器,游标需要前移3个成员时,定时器才会超时,这时,向分配了该定时器的软件模块发送消息,告知被分配的定时器已经到时,如图4 所示,游标当前位置指向成员7,定时器的预设定时时间为30ms,每个成员代表10ms,游标需要移动并指向成员9时才到时,因此,将预设定时时间为30ms的定时器挂载在成员9下。 注意,游标指向成员7时,成员7所代表的IOms时间段并没有被纳入计时,在计时时应先计成员7的10ms。对于大于10X30000ms的定时时间,游标会回到时钟滴答数组开头,循环往
Μ. ο若被分配的定时器的预设定时时间大于时钟滴答数组的总时长时,除确定被分配的定时器的计时时间到达对应的预设定时时间,游标在时钟滴答数组中指向的成员,还需要确定被分配的定时器在时钟滴答数组上循环的次数。例如,时钟滴答数组的总时长为 10x30000ms,为软件模块分配一个定时器A,定时的时间为10X60000ms,游标当前指向成员200,那么A位置的计算过程如下到时时游标应移动的成员数dwDly = 10*60000/10 ;到时时游标对应的成员dwTime = 200+dwDly-l ;在时钟滴答数组上的循环次数dwTimerCounter = (dwDly-1)/30000 ;偏移量 wPos = dwTime % 30000 ;根据上述数据可以计算出dwTimerCounter = 1,wPos = 199,所以定时器A应挂载在时钟滴答数组中成员199下,游标第二次移动到指向成员199,定时器A到达预设定时时间,计时结束。实施时,游标指向的成员下可能挂载多个定时器,此时,只需要将游标指向的成员下挂载的到时的定时器通知使用这些定时器的软件模块,未到时的不需要通知。实施时,为方便管理,当时钟滴答数组的一个成员下挂载至少一个定时器时,需要采用某些方式对至少一个定时器进行处理,例如,一种较佳的实施方式为采用双向链表方式将该成员下的至少一个定时器串联,在双向链表中,每个定时器的标识对应一前置变量wPreNode和一后置变量wNextNode,其中,wPreNode用于指向该标识标志的定时器的前一个定时器的标识,WNextNode用于指向该标识标志的定时器的后一个定时器的标识, 具体结构如图5所示,成员9下挂载着定时器1与定时器2,两者的标识通过wPreNode和 WNextNode链接成双向链表。一种较优的处理方式为在已挂载至少一个定时器的成员下增加定时器时,将增加的定时器的标识放到双向链表的表头,利用增加的定时器的标识的后置变量链接双向链表的原表头对应的定时器。当然,将增加的定时器的标识放在双向链表的表头是一种较优的实施方式,在实际应用中,也可以将增加的定时器的标识放在双向链表的表尾或其他位置,根据具体情况而定。在一个实施例中,如图1所示流程,步骤101在实施之后,步骤102在实施之前,还包括查询空闲的定时器在定时器共享内存中的位置,定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员,其序号依次
为0、1、2、.......(TIMER_MAX_TIMERS-1),具体结构如图6所示。一种较优的实施方式是
利用空闲结点表,将空闲的定时器在定时器共享内存中的位置均记录在空闲结点表中,具体处理流程如下在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器,将确定的空闲的定时器分配给软件模块。为方便空闲结点表中进行查询分配等相关操作,空闲结点表具有指向空闲结点表表头的头变量WFreeHead和空闲结点表表尾的尾变量wFreeTail,在应用过程中,在为软件模块分配一个空闲的定时器之后,设置wFreeHead在存储数组中后移一位;释放一个被分配的定时器占用的资源之后,设置WFreeTail在存储数组中后移一位。初始时刻,空闲结点表中记录的空闲定时器就是定时器共享内存中的所有定时器,此时,wFreeHead = 0, wFreeTail = TIMER_MAX_TIMERS_1,具体结构如图7所示。实施过程中,为软件模块分配一个空闲的定时器之后,wFreeHead在存储数组中后移一位,释放一个被分配的定时器占用的资源之后,wFreeTail在存储数组中后移一位。当wFreeHead和wFreeTail指向的成员的数值大于存储数组的最大值TIMER_MAX_TIMERS-1时,wFreeHead和wFreeTail返回并指向存储数组的第一位成员0,即wFreeHead和wFreehil在空闲结点表上循环移动。实施时,定时器的个数也是可配置的(用TIMER_MAX_TIMERS表示),一般的情况下 100个定时器已经足够使用了,由于定时器是采用静态分配内存的,考虑到有的设备内存较小,可以将定时器个数配置成较小的定时器个数,这样就节省了内存空间。在本发明实施例提供的定时方法中,当被分配的定时器的计时时间未到达对应的预设定时时间时,接收定时器取消请求,通知被分配的定时器停止计时。即,可以在定时器没有到时的情况下取决定时器计时,灵活性高。由于本发明实施例提供的定时方法是根据软件模块的定时器调用请求分配空闲的定时器,而不是使用所在操作系统自带的定时器进行计时,因此,避免了操作系统自带定时器依赖于本系统的信号触发及处理、受到本系统信号的限制,以及受到进程中定时器数目的限制。根据本发明实施例提供的定时方法,扫描时钟滴答数组,确定定时器是否到时,以及到时后的相关处理的具体处理流程如图8所示,包括步骤801、延时 TIMER_SLEEP 时间;步骤802、判断游标wScanPos所指时钟滴答数组的成员下是否挂载有定时器,若有,执行步骤803,若否,返回步骤801 ;步骤803、搜索该成员下的双向链表中的定时器;步骤804、判断dwCountTimer是否为0,若是,执行步骤805,若否,执行步骤809 ;步骤805、定时到时,向使用定时器的软件模块发送消息,通知定时到时;步骤806、释放该定时器,调整该成员下的双向链表;步骤807、将该定时器添加到空闲结点表中;步骤808、判断是否到达双向链表的链表尾,若是,执行步骤801,若否,执行步骤 803 ;步骤809、dwCountTimer 减 1,流程结束。根据本发明实施例提供的定时方法,利用空闲结点表管理空闲的定时器,其具体处理流程如图9所示步骤901、查询空闲结点表,确认当前存在空闲定时器;步骤902、判断wFreeHead是否等于wFreeTail,若否,执行步骤903,若是,执行步骤 908 ;步骤903、将空闲结点表中wFreeHead所指的定时器分配给请求定时器的软件模块;步骤904、将分配的定时器标识为已用;步骤905、wFreeHead 向后移一位;步骤906、根据预定定时时间将分配的定时器挂载在对应的时钟滴答数组的成员下;步骤907、调整该成员下的双向链表,将分配的定时器添加到表头;步骤908、通知请求定时器的软件模块没有空闲的定时器。根据本发明实施例提供的定时方法,当定时器到达预设定时时间或者被取消,具体处理流程如图10所示步骤1001、将到达预设定时时间或者被取消的定时器设置为空闲;步骤1002、修改空闲结点表,将wFreeTail指向该定时器,在空闲结点表中后移一位;步骤1003、调整该定时器所在的双向链表,将该定时器前后定时器串联起来。基于同一发明构思,本发明实施例还提供了一种定时装置,具体结构如图11所示,包括接收模块1101,用于接收软件模块发送的定时器调用请求;分配模块1102,用于为软件模块分配空闲的定时器,并利用被分配的定时器进行计时;发送模块1103,用于当被分配的定时器的计时时间到达对应的预设定时时间时, 向软件模块发送定时器到时消息。在一个实施例中,如图12所示结构,定时装置还可以包括释放模块1201,用于向软件模块发送定时器到时消息之后,将被分配的定时器恢复为空闲状态,并释放被分配的定时器占用的资源。在一个实施例中,如图13所示结构,分配模块1102可以包括获取子模块1301,用于获取被分配的定时器的预设定时时间,并确定时钟滴答数组中游标当前指向的第一成员;估测子模块1302,用于估测被分配的定时器的计时时间到达预设定时时间时游标指向的第二成员,并将被分配的定时器挂载到第二成员下;预测子模块1303,用于根据预设定时时间,预测游标遍历时钟滴答数组的次数N, 其中,0的整数,且N等于预设定时时间与时钟滴答数组的总时长的比值向下取整;计时子模块1304,用于移动游标进行计时,当游标第N+1次移动到指向第二成员时,被分配的定时器的计时时间到达预设定时时间。在一个实施例中,如图14所示结构,分配模块1102还可以包括串联子模块1401,用于当时钟滴答数组的一个成员下挂载至少一个定时器时,采用双向链表方式将该成员下的至少一个定时器的标识串联;在双向链表中,每个定时器的标识对应一前置变量wPreNode和一后置变量wNextNode,其中,wPreNode用于指向该标识标志的定时器的前一个定时器的标识,wNextNode用于指向该标识标志的定时器的后一个
1定时器的标识。在一个实施例中,如图15所示结构,分配模块1102还可以包括增加子模块1501,用于在已挂载至少一个定时器的成员下增加定时器时,将增加的定时器的标识放到双向链表的表头,利用增加的定时器的标识的后置变量链接双向链表的原表头对应的定时器的标识。在一个实施例中,如图16所示结构,分配模块1102可以包括查询子模块1601,用于在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员;确定子模块1602,用于根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器;分配子模块1603,用于将确定的空闲的定时器分配给所述软件模块。在一个实施例中,如图17所示结构,查询子模块1601还可以包括设置单元1701,用于当空闲结点表具有指向空闲结点表表头的头变量wFreeHead 和指向空闲结点表表尾的尾变量wFreeTai 1,且当wFreeHead和所述wFreeTai 1指向的成员的数值均大于存储数组的最大值时,设置WFreeHead和所述wFreeTail返回并指向存储数组的第一位成员;第一后移单元1702,用于为软件模块分配一个空闲的定时器之后,设置 wFreeHead在存储数组中后移一位;第二后移单元1703,用于释放一个被分配的定时器占用的资源之后,设置 wFreeTail在存储数组中后移一位。在一个实施例中,如图18所示结构,定时装置还可以包括取消模块1801,用于当被分配的定时器的计时时间未到达对应的预设定时时间时,接收定时器取消请求,通知被分配的定时器停止计时。在本发明实施例中,根据软件模块的定时器调用请求分配空闲的定时器,而不是使用所在操作系统自带的定时器进行计时,当被分配的定时器的计时时间到达对应的预设定时时间时,向软件模块发送定时器到时消息,能够避免了操作系统自带定时器依赖于本系统的信号触发及处理、受到本系统信号的限制,以及受到进程中定时器数目的限制,以及,不影响软件模块自身的信号触发及处理,也不会影响软件模块正在处理的进程,避免进程执行过程中信号突然中止的问题。进一步,在当被分配的定时器的计时时间未到达对应的预设定时时间时,接收定时器取消请求,通知被分配的定时器停止计时。即,可以在定时器没有到时的情况下取决定时器计时,灵活性高。进一步,向软件模块发送定时器到时消息之后,释放被分配的定时器占用的资源, 能够大幅度地节省内存资源,提高内存的利用率。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种定时方法,其特征在于,包括 接收软件模块发送的定时器调用请求;为所述软件模块分配空闲的定时器,并利用被分配的定时器进行计时; 当所述被分配的定时器的计时时间到达对应的预设定时时间时,向所述软件模块发送定时器到时消息。
2.如权利要求1所述的方法,其特征在于,向所述软件模块发送定时器到时消息之后, 还包括将所述被分配的定时器恢复为空闲状态,并释放所述被分配的定时器占用的资源。
3.如权利要求1或2所述的方法,其特征在于,所述利用被分配的定时器进行计时,包括获取所述被分配的定时器的预设定时时间,并确定时钟滴答数组中游标当前指向的第一成员,所述成员代表设定的时间长度值;根据所述预设定时时间,估测所述被分配的定时器的计时时间到达所述预设定时时间时所述游标指向的第二成员,并将所述被分配的定时器挂载到所述第二成员下;根据所述预设定时时间,预测所述游标遍历所述时钟滴答数组的次数N,其中,N等于所述预设定时时间与所述时钟滴答数组的总时长的比值向下取整;移动所述游标进行计时,当所述游标第N+1次移动到指向第二成员时,所述被分配的定时器的计时时间到达所述预设定时时间。
4.如权利要求3所述的方法,其特征在于,还包括当所述时钟滴答数组的一个成员下挂载至少一个定时器时,采用双向链表方式将该成员下的至少一个定时器的标识串联;在所述双向链表中,每个定时器的标识对应一前置变量WPreNode和一后置变量 wNextNode,其中,所述wPreNode用于指向该标识标志的定时器的前一个定时器的标识,所述WNextNode用于指向该标识标志的定时器的后一个定时器的标识。
5.如权利要求4所述的方法,其特征在于,还包括在已挂载至少一个定时器的成员下增加定时器时,将增加的定时器的标识放到所述双向链表的表头,利用所述增加的定时器的标识的后置变量链接所述双向链表的原表头对应的定时器的标识。
6.如权利要求2所述的方法,其特征在于,所述为所述软件模块分配定时器,包括在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,所述定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员;根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器; 将确定的空闲的定时器分配给所述软件模块。
7.如权利要求6所述的方法,其特征在于,所述空闲结点表具有指向所述空闲结点表表头的头变量wFre eHead和指向所述空闲结点表表尾的尾变量wFre eTa i 1,且当所述 WFreeHead和所述wFreeTail指向的成员的数值均大于所述存储数组的最大值时,设置所述wFreeHead和所述wFreeTail返回并指向所述存储数组的第一位成员;为所述软件模块分配一个空闲的定时器之后,设置所述wFreeHead在所述存储数组中后移一位;释放一个被分配的定时器占用的资源之后,设置所述wFreeTail在所述存储数组中后移一位。
8.如权利要求1所述的方法,其特征在于,还包括当所述被分配的定时器的计时时间未到达对应的预设定时时间时,接收定时器取消请求,通知被分配的定时器停止计时。
全文摘要
本发明公开了一种定时方法,包括接收软件模块发送的定时器调用请求;为所述软件模块分配空闲的定时器,并利用被分配的定时器进行计时;当所述被分配的定时器的计时时间到达对应的预设定时时间时,向所述软件模块发送定时器到时消息。本发明还公开了一种定时装置。采用本发明可以解决现有技术中存在定时器受到所在操作系统的信号的限制,以及每个进程中定时器数目的限制的问题。
文档编号G06F1/06GK102478878SQ20101055954
公开日2012年5月30日 申请日期2010年11月23日 优先权日2010年11月23日
发明者高峰 申请人:天津中兴软件有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1