CN101833450A - 定时方法和装置 - Google Patents

定时方法和装置 Download PDF

Info

Publication number
CN101833450A
CN101833450A CN201010154109A CN201010154109A CN101833450A CN 101833450 A CN101833450 A CN 101833450A CN 201010154109 A CN201010154109 A CN 201010154109A CN 201010154109 A CN201010154109 A CN 201010154109A CN 101833450 A CN101833450 A CN 101833450A
Authority
CN
China
Prior art keywords
timer
timing
assigned
array
software module
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.)
Granted
Application number
CN201010154109A
Other languages
English (en)
Other versions
CN101833450B (zh
Inventor
高峰
冷卫杰
徐运
管慧娟
陈杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Intelligent IoT Technology Co Ltd
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201010154109.2A priority Critical patent/CN101833450B/zh
Publication of CN101833450A publication Critical patent/CN101833450A/zh
Priority to PCT/CN2010/079619 priority patent/WO2011131010A1/zh
Application granted granted Critical
Publication of CN101833450B publication Critical patent/CN101833450B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种定时方法,包括:接收软件模块发送的定时器调用请求;为所述软件模块分配空闲的定时器,并利用被分配的定时器进行计时;当所述被分配的定时器的计时时间到达对应的预设定时时间时,向所述软件模块发送定时器到时消息。本发明还公开了一种定时装置。采用本发明可以解决现有技术中存在定时器受到所在操作系统的信号的限制,以及每个进程中定时器数目的限制的问题。

Description

定时方法和装置
技术领域
本发明涉及嵌入式软件开发领域,尤其是涉及该领域中的定时方法和装置。
背景技术
在软件开发过程中,很多软件模块需要用到定时器。现有技术中存在多种不同的操作系统,且每个操作系统中的定时器均依赖于本系统的信号触发及处理,并且,对于依赖本系统的定时器而言,每个进程中能够使用的定时器数目是固定的,因此,定时器除受信号的限制外,还受到进程中定时器数目的限制。例如,在Linux操作系统中,主要使用三种定时器,分别是alarm()、POSIX:XSI间隔定时器setitimer()、POSIX:TMR间隔定时器timer_create(),这些定时器都建立在Linux操作系统的信号触发、处理的基础上,并且有定时器个数和信号的限制。
发明内容
本发明提供一种定时方法,用以解决现有技术中存在定时器受到所在操作系统的信号的限制,以及每个进程中定时器数目的限制的问题,包括:
接收软件模块发送的定时器调用请求;
为所述软件模块分配空闲的定时器,并利用被分配的定时器进行计时;
当所述被分配的定时器的计时时间到达对应的预设定时时间时,向所述软件模块发送定时器到时消息。
较佳的,向所述软件模块发送定时器到时消息之后,还包括:将所述被分配的定时器恢复为空闲状态,并释放所述被分配的定时器占用的资源。
较佳的,所述利用被分配的定时器进行计时,包括:
获取所述被分配的定时器的预设定时时间,并确定时钟滴答数组中游标当前指向的第一成员,所述成员代表设定的时间长度值;
根据所述预设定时时间,估测所述被分配的定时器的计时时间到达所述预设定时时间时所述游标指向的第二成员,并将所述被分配的定时器挂载到所述第二成员下;
根据所述预设定时时间,预测所述游标遍历所述时钟滴答数组的次数N,其中,N等于所述预设定时时间与所述时钟滴答数组的总时长的比值向下取整;
移动所述游标进行计时,当所述游标第N+1次移动到指向第二成员时,所述被分配的定时器的计时时间到达所述预设定时时间。
较佳的,还包括:
当所述时钟滴答数组的一个成员下挂载至少一个定时器时,采用双向链表方式将该成员下的至少一个定时器的标识串联;
在所述双向链表中,每个定时器的标识对应一前置变量wPreNode和一后置变量wNextNode,其中,所述wPreNode用于指向该标识标志的定时器的前一个定时器的标识,所述wNextNode用于指向该标识标志的定时器的后一个定时器的标识。
较佳的,还包括:
在已挂载至少一个定时器的成员下增加定时器时,将增加的定时器的标识放到所述双向链表的表头,利用所述增加的定时器的标识的后置变量链接所述双向链表的原表头对应的定时器的标识。
较佳的,所述为所述软件模块分配定时器,包括:
在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,所述定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员;
根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器;
将确定的空闲的定时器分配给所述软件模块。
较佳的,所述空闲结点表具有指向所述空闲结点表表头的头变量wFreeHead和指向所述空闲结点表表尾的尾变量wFreeTail,且当所述wFreeHead和所述wFreeTail指向的成员的数值均大于所述存储数组的最大值时,设置所述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次移动到指向第二成员时,被分配的定时器的计时时间到达预设定时时间。
在本例中,时钟滴答数组的大小TIMER_MAX_TMCB_NUM是可以配置的,当然,TIMER_MAX_TMCB_NUM只能够取≥0的整数,例如,TIMER_MAX_TMCB_NUM可以取值为30000。实施时,时钟滴答数组中每个成员代表一个已预先设定的时间段,各个成员的位置序号按顺序依次为0-(TIMER_MAX_TMCB_NUM-1),在时钟滴答数组中有一个游标wScanPos指向数组中的某个成员,代表当前所处的时间,具体结构如图3所示。当计时的时间到达游标当前所指成员代表的时间段时,游标指向该成员的下一个成员。游标每走一步的时间是通过延时函数来实现,例如在linux操作系统中使用usleep()函数时间。
通常将被被分配的定时器挂载到其到时时刻对应的时钟滴答数组成员下,当游标移动到指向该成员时,就代表了该定时器到时。实施时,每个成员代表的已设定的时间段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所代表的10ms时间段并没有被纳入计时,在计时时应先计成员7的10ms。对于大于10×30000ms的定时时间,游标会回到时钟滴答数组开头,循环往复。
若被分配的定时器的预设定时时间大于时钟滴答数组的总时长时,除确定被分配的定时器的计时时间到达对应的预设定时时间,游标在时钟滴答数组中指向的成员,还需要确定被分配的定时器在时钟滴答数组上循环的次数。例如,时钟滴答数组的总时长为10×30000ms,为软件模块分配一个定时器A,定时的时间为10×60000ms,游标当前指向成员200,那么A位置的计算过程如下:
到时时游标应移动的成员数dwDly=10*60000/10;
到时时游标对应的成员dwTime=200+dwDly-1;
在时钟滴答数组上的循环次数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和wFreeTail在空闲结点表上循环移动。
实施时,定时器的个数也是可配置的(用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,其中,N为≥0的整数,且N等于预设定时时间与时钟滴答数组的总时长的比值向下取整;
计时子模块1304,用于移动游标进行计时,当游标第N+1次移动到指向第二成员时,被分配的定时器的计时时间到达预设定时时间。
在一个实施例中,如图14所示结构,分配模块1102还可以包括:
串联子模块1401,用于当时钟滴答数组的一个成员下挂载至少一个定时器时,采用双向链表方式将该成员下的至少一个定时器的标识串联;在双向链表中,每个定时器的标识对应一前置变量wPreNode和一后置变量wNextNode,其中,wPreNode用于指向该标识标志的定时器的前一个定时器的标识,wNextNode用于指向该标识标志的定时器的后一个定时器的标识。
在一个实施例中,如图15所示结构,分配模块1102还可以包括:
增加子模块1501,用于在已挂载至少一个定时器的成员下增加定时器时,将增加的定时器的标识放到双向链表的表头,利用增加的定时器的标识的后置变量链接双向链表的原表头对应的定时器的标识。
在一个实施例中,如图16所示结构,分配模块1102可以包括:
查询子模块1601,用于在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员;
确定子模块1602,用于根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器;
分配子模块1603,用于将确定的空闲的定时器分配给所述软件模块。
在一个实施例中,如图17所示结构,查询子模块1601还可以包括:
设置单元1701,用于当空闲结点表具有指向空闲结点表表头的头变量wFreeHead和指向空闲结点表表尾的尾变量wFreeTail,且当wFreeHead和所述wFreeTail指向的成员的数值均大于存储数组的最大值时,设置wFreeHead和所述wFreeTail返回并指向存储数组的第一位成员;
第一后移单元1702,用于为软件模块分配一个空闲的定时器之后,设置wFreeHead在存储数组中后移一位;
第二后移单元1703,用于释放一个被分配的定时器占用的资源之后,设置wFreeTail在存储数组中后移一位。
在一个实施例中,如图18所示结构,定时装置还可以包括:
取消模块1801,用于当被分配的定时器的计时时间未到达对应的预设定时时间时,接收定时器取消请求,通知被分配的定时器停止计时。
在本发明实施例中,根据软件模块的定时器调用请求分配空闲的定时器,而不是使用所在操作系统自带的定时器进行计时,当被分配的定时器的计时时间到达对应的预设定时时间时,向软件模块发送定时器到时消息,能够避免了操作系统自带定时器依赖于本系统的信号触发及处理、受到本系统信号的限制,以及受到进程中定时器数目的限制,以及,不影响软件模块自身的信号触发及处理,也不会影响软件模块正在处理的进程,避免进程执行过程中信号突然中止的问题。
进一步,在当被分配的定时器的计时时间未到达对应的预设定时时间时,接收定时器取消请求,通知被分配的定时器停止计时。即,可以在定时器没有到时的情况下取决定时器计时,灵活性高。
进一步,向软件模块发送定时器到时消息之后,释放被分配的定时器占用的资源,能够大幅度地节省内存资源,提高内存的利用率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (13)

1.一种定时方法,其特征在于,包括:
接收软件模块发送的定时器调用请求;
为所述软件模块分配空闲的定时器,并利用被分配的定时器进行计时;
当所述被分配的定时器的计时时间到达对应的预设定时时间时,向所述软件模块发送定时器到时消息。
2.如权利要求1所述的方法,其特征在于,向所述软件模块发送定时器到时消息之后,还包括:将所述被分配的定时器恢复为空闲状态,并释放所述被分配的定时器占用的资源。
3.如权利要求1或2所述的方法,其特征在于,所述利用被分配的定时器进行计时,包括:
获取所述被分配的定时器的预设定时时间,并确定时钟滴答数组中游标当前指向的第一成员,所述成员代表设定的时间长度值;
根据所述预设定时时间,估测所述被分配的定时器的计时时间到达所述预设定时时间时所述游标指向的第二成员,并将所述被分配的定时器挂载到所述第二成员下;
根据所述预设定时时间,预测所述游标遍历所述时钟滴答数组的次数N,其中,N等于所述预设定时时间与所述时钟滴答数组的总时长的比值向下取整;
移动所述游标进行计时,当所述游标第N+1次移动到指向第二成员时,所述被分配的定时器的计时时间到达所述预设定时时间。
4.如权利要求3所述的方法,其特征在于,还包括:
当所述时钟滴答数组的一个成员下挂载至少一个定时器时,采用双向链表方式将该成员下的至少一个定时器的标识串联;
在所述双向链表中,每个定时器的标识对应一前置变量wPreNode和一后置变量wNextNode,其中,所述wPreNode用于指向该标识标志的定时器的前一个定时器的标识,所述wNextNode用于指向该标识标志的定时器的后一个定时器的标识。
5.如权利要求4所述的方法,其特征在于,还包括:
在已挂载至少一个定时器的成员下增加定时器时,将增加的定时器的标识放到所述双向链表的表头,利用所述增加的定时器的标识的后置变量链接所述双向链表的原表头对应的定时器的标识。
6.如权利要求2所述的方法,其特征在于,所述为所述软件模块分配定时器,包括:
在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,所述定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员;
根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器;
将确定的空闲的定时器分配给所述软件模块。
7.如权利要求6所述的方法,其特征在于,所述空闲结点表具有指向所述空闲结点表表头的头变量wFreeHead和指向所述空闲结点表表尾的尾变量wFreeTail,且当所述wFreeHead和所述wFreeTail指向的成员的数值均大于所述存储数组的最大值时,设置所述wFreeHead和所述wFreeTail返回并指向所述存储数组的第一位成员;
为所述软件模块分配一个空闲的定时器之后,设置所述wFreeHead在所述存储数组中后移一位;
释放一个被分配的定时器占用的资源之后,设置所述wFreeTail在所述存储数组中后移一位。
8.如权利要求1所述的方法,其特征在于,还包括:
当所述被分配的定时器的计时时间未到达对应的预设定时时间时,接收定时器取消请求,通知被分配的定时器停止计时。
9.一种定时装置,其特征在于,包括:
接收模块,用于接收软件模块发送的定时器调用请求;
分配模块,用于为所述软件模块分配空闲的定时器,并利用被分配的定时器进行计时;
发送模块,用于当所述被分配的定时器的计时时间到达对应的预设定时时间时,向所述软件模块发送定时器到时消息。
10.如权利要求9所述的装置,其特征在于,还包括:
释放模块,用于向所述软件模块发送定时器到时消息之后,将所述被分配的定时器恢复为空闲状态,并释放所述被分配的定时器占用的资源。
11.如权利要求9或10所述的装置,其特征在于,所述分配模块包括:
获取子模块,用于获取所述被分配的定时器的预设定时时间,并确定时钟滴答数组中游标当前指向的第一成员,所述成员代表设定的时间长度值;
估测子模块,用于估测所述被分配的定时器的计时时间到达所述预设定时时间时所述游标指向的第二成员,并将所述被分配的定时器挂载到所述第二成员下;
预测子模块,用于根据所述预设定时时间,预测所述游标遍历所述时钟滴答数组的次数N,其中,N为≥0的整数,且N等于所述预设定时时间与所述时钟滴答数组的总时长的比值向下取整;
计时子模块,用于移动所述游标进行计时,当所述游标第N+1次移动到指向第二成员时,所述被分配的定时器的计时时间到达所述预设定时时间。
12.如权利要求11所述的装置,其特征在于,所述分配模块还包括:
串联子模块,用于当所述时钟滴答数组的一个成员下挂载至少一个定时器时,采用双向链表方式将该成员下的至少一个定时器的标识串联;在所述双向链表中,每个定时器的标识对应一前置变量wPreNode和一后置变量wNextNode,其中,所述wPreNode用于指向该标识标志的定时器的前一个定时器的标识,所述wNextNode用于指向该标识标志的定时器的后一个定时器的标识。
13.如权利要求10所述的装置,其特征在于,所述分配模块包括:
查询子模块,用于在空闲结点表中查询空闲的定时器在定时器共享内存中的位置信息,所述定时器共享内存按数组方式存储已被分配的定时器和空闲的定时器,每个定时器是其所在的存储数组的一个成员;
确定子模块,用于根据查询到的位置信息在定时器共享内存中确定对应的空闲的定时器;
分配子模块,用于将确定的空闲的定时器分配给所述软件模块。
CN201010154109.2A 2010-04-21 2010-04-21 定时方法和装置 Active CN101833450B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201010154109.2A CN101833450B (zh) 2010-04-21 2010-04-21 定时方法和装置
PCT/CN2010/079619 WO2011131010A1 (zh) 2010-04-21 2010-12-09 定时方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010154109.2A CN101833450B (zh) 2010-04-21 2010-04-21 定时方法和装置

Publications (2)

Publication Number Publication Date
CN101833450A true CN101833450A (zh) 2010-09-15
CN101833450B CN101833450B (zh) 2015-01-28

Family

ID=42717531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010154109.2A Active CN101833450B (zh) 2010-04-21 2010-04-21 定时方法和装置

Country Status (2)

Country Link
CN (1) CN101833450B (zh)
WO (1) WO2011131010A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011131010A1 (zh) * 2010-04-21 2011-10-27 中兴通讯股份有限公司 定时方法和装置
CN102662428A (zh) * 2012-03-01 2012-09-12 中国科学院计算技术研究所 一种离散事件网络模拟环境的时钟同步方法
CN103034493A (zh) * 2012-12-10 2013-04-10 上海斐讯数据通信技术有限公司 一种定时器节点的管理方法和系统
CN103425058A (zh) * 2012-05-15 2013-12-04 安凯(广州)微电子技术有限公司 一种计时方法、中央处理器及电子设备
CN109471663A (zh) * 2018-10-30 2019-03-15 珠海格力智能装备有限公司 单片机程序的执行方法及装置
CN110362554A (zh) * 2019-06-24 2019-10-22 平安科技(深圳)有限公司 定时器的设定方法、装置、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1441570A (zh) * 2002-02-28 2003-09-10 深圳市中兴通讯股份有限公司上海第二研究所 嵌入式实时操作系统中定时器的计时方法
CN101272564A (zh) * 2008-04-17 2008-09-24 中兴通讯股份有限公司 一种软实时定时器调度的方法及软实时定时器模块
CN100589449C (zh) * 2007-08-15 2010-02-10 中兴通讯股份有限公司 网络处理器中定时器的实现方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100585563C (zh) * 2006-01-20 2010-01-27 华为技术有限公司 一种定时器任务服务方法
CN101833450B (zh) * 2010-04-21 2015-01-28 中兴通讯股份有限公司 定时方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1441570A (zh) * 2002-02-28 2003-09-10 深圳市中兴通讯股份有限公司上海第二研究所 嵌入式实时操作系统中定时器的计时方法
CN100589449C (zh) * 2007-08-15 2010-02-10 中兴通讯股份有限公司 网络处理器中定时器的实现方法
CN101272564A (zh) * 2008-04-17 2008-09-24 中兴通讯股份有限公司 一种软实时定时器调度的方法及软实时定时器模块

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011131010A1 (zh) * 2010-04-21 2011-10-27 中兴通讯股份有限公司 定时方法和装置
CN102662428A (zh) * 2012-03-01 2012-09-12 中国科学院计算技术研究所 一种离散事件网络模拟环境的时钟同步方法
CN102662428B (zh) * 2012-03-01 2015-02-04 中国科学院计算技术研究所 一种离散事件网络模拟环境的时钟同步方法
CN103425058A (zh) * 2012-05-15 2013-12-04 安凯(广州)微电子技术有限公司 一种计时方法、中央处理器及电子设备
CN103425058B (zh) * 2012-05-15 2016-08-03 安凯(广州)微电子技术有限公司 一种计时方法、中央处理器及电子设备
CN103034493A (zh) * 2012-12-10 2013-04-10 上海斐讯数据通信技术有限公司 一种定时器节点的管理方法和系统
CN103034493B (zh) * 2012-12-10 2015-11-18 上海斐讯数据通信技术有限公司 一种定时器节点的管理方法和系统
CN109471663A (zh) * 2018-10-30 2019-03-15 珠海格力智能装备有限公司 单片机程序的执行方法及装置
CN110362554A (zh) * 2019-06-24 2019-10-22 平安科技(深圳)有限公司 定时器的设定方法、装置、设备及计算机可读存储介质
CN110362554B (zh) * 2019-06-24 2024-05-03 平安科技(深圳)有限公司 定时器的设定方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
WO2011131010A1 (zh) 2011-10-27
CN101833450B (zh) 2015-01-28

Similar Documents

Publication Publication Date Title
CN101833450A (zh) 定时方法和装置
CN102576331B (zh) 用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法
KR950012293B1 (ko) 정보처리장치 및 이를 이용한 정보처리방법
CN106775965B (zh) 一种定时任务的处理方法及装置
CN103294544B (zh) 嵌入式系统及其中断处理方法与装置
US20170329632A1 (en) Device scheduling method, task manager and storage medium
CN102455940B (zh) 一种定时器和异步事件的处理方法及系统
KR20070083460A (ko) 다중 커널을 동시에 실행하는 방법 및 시스템
CN101329655B (zh) 一种内存管理方法和内存管理装置
CN103793255B (zh) 可配置的多主模式多os内核实时操作系统架构的启动方法
US10248456B2 (en) Method and system for providing stack memory management in real-time operating systems
CN105450618A (zh) 一种api服务器处理大数据的运算方法及其系统
US8364877B2 (en) Implementing gang interrupts
CN102591703B (zh) 操作系统的任务调度方法、装置及计算机
CN109673061A (zh) 一种pdu会话处理的方法和装置
CN103455355A (zh) 安卓设备及其适配器视图的异步数据加载方法及装置
US7225443B2 (en) Stack usage in computer-related operating systems
CN105335130A (zh) 一种处理器及其处理任务的方法
CN102478878A (zh) 定时方法
CN102760073A (zh) 一种任务调度方法、系统及装置
CN116089049B (zh) 基于异步并行i/o请求的进程同步调度方法、装置以及设备
CN103136043B (zh) 一种异步io的迁移方法、系统和网络节点
CA2767782C (en) Suspendable interrupts for processor idle management
KR101635816B1 (ko) 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
CN110968147B (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
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160906

Address after: 300308 Tianjin Airport Economic Zone, Binhai New Area seven East Road No. 2 Zhongxing Industrial Base

Patentee after: ZTE INTELLIGENT IOT TECHNOLOGY Co.,Ltd.

Address before: 518057 Nanshan District Guangdong high tech Industrial Park, South Road, science and technology, ZTE building, Ministry of Justice

Patentee before: ZTE Corp.

CP03 Change of name, title or address

Address after: Room 401, building 12, east area, airport business park, No. 80, Huanhe North Road, free trade zone (Airport Economic Zone), Binhai New Area, Tianjin 300000

Patentee after: Gaoxing Zhilian Technology Co.,Ltd.

Address before: 300308, Zhongxing Industrial base, 2 East seven, Airport Economic Zone, Tianjin Binhai New Area

Patentee before: ZTE INTELLIGENT IOT TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address
CP01 Change in the name or title of a patent holder

Address after: Room 401, building 12, East Airport Business Park, 80 Huanhe North Road, Tianjin Binhai New Area pilot free trade zone (Airport Economic Zone)

Patentee after: Zte Intelligent Iot Technology Co.,Ltd.

Address before: Room 401, building 12, East Airport Business Park, 80 Huanhe North Road, Tianjin Binhai New Area pilot free trade zone (Airport Economic Zone)

Patentee before: Gaoxing Zhilian Technology Co.,Ltd.

CP01 Change in the name or title of a patent holder