CN112162820A - 计时器的计时方法和装置 - Google Patents

计时器的计时方法和装置 Download PDF

Info

Publication number
CN112162820A
CN112162820A CN202011007733.XA CN202011007733A CN112162820A CN 112162820 A CN112162820 A CN 112162820A CN 202011007733 A CN202011007733 A CN 202011007733A CN 112162820 A CN112162820 A CN 112162820A
Authority
CN
China
Prior art keywords
timing
compensation
counting value
total
processor
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
Application number
CN202011007733.XA
Other languages
English (en)
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.)
Guangzhou Liuhuan Information Technology Co ltd
Original Assignee
Guangzhou Liuhuan Information Technology Co ltd
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 Guangzhou Liuhuan Information Technology Co ltd filed Critical Guangzhou Liuhuan Information Technology Co ltd
Priority to CN202011007733.XA priority Critical patent/CN112162820A/zh
Publication of CN112162820A publication Critical patent/CN112162820A/zh
Pending legal-status Critical Current

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

本发明公开了一种计时器的计时方法和装置。其中,该方法包括:检测设备的处理器的使用率;根据处理器的使用率确定计数总值对应的补偿因子,其中,计数总值根据预设的计时时间和预设的时间周期确定;基于补偿因子对计数总值进行补偿处理;基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,其中,计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上变更得到当前计数值。本发明解决了现有技术中由于计时器的计时不准确导致无法满足一些任务的时序需求的技术问题。

Description

计时器的计时方法和装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种计时器的计时方法和装置。
背景技术
在Linux车载娱乐系统等终端设备中,很多场景都会用到定时器(或称timer)实现某种需要,定时去完成某项功能。如消息定时循环发送、HMI交互弹出提示框定时后自动消失等。虽然Linux操作系统也提供源生定时器接口,但由于容易受系统信号干扰(非正常的信号唤醒),使用不灵活便利等因素,系统开发中通常会自行设计定时器,并对外提供封装后的接口。
目前普遍的做法如下:创建一个timer容器,记录timer节点的信息,如周期、循环次数、定时回调函数、id等信息。实现timer的计数管理器,在每个计时周期,轮询获取timer节点,并将其循环次数减1。当轮询达到一个周期的时候,调用回调函数执行定时操作功能。
图1是现有技术的一种计时器的示意图,如图1所示,构建一个timer容器,首先传入定时参数,如定时1秒等信息,计数管理器将其按照时间单元转换为计数值,如10ms一个时间周期,可以转换为计数值=1000/10=100次。定时计数器每个10ms轮询一次并将技术管理器中的计数值减1(cnt--),当计数值为0时候,计时结束,调用回调函数(callback)执行相关操作。
但大部分场合定时器的使用,系统阻塞虚拟出来的时间周期数值容易受到系使用情况的影响,导致时间周期误差放大,累积起来的定时误差也就随之增大。因此对于一些对定时精度要求相对高的使用场景,经常会因为系统的使用负荷的影响而波动,放大了定时器的误差,导致消息时序无法满足实时性的精度要求。
针对现有技术中由于计时器的计时不准确导致无法满足一些任务的时序需求的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种计时器的计时方法和装置,以至少解决现有技术中由于计时器的计时不准确导致无法满足一些任务的时序需求的技术问题。
根据本发明实施例的一个方面,提供了一种计时器的计时方法,包括:检测设备的处理器的使用率;根据所述处理器的使用率确定计数总值对应的补偿因子,其中,所述计数总值根据预设的计时时间和预设的时间周期确定;基于补偿因子对计数总值进行补偿处理;基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,其中,计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上变更得到当前计数值。
进一步地,处理器的使用率与补偿因子呈反比例关系。
进一步地,基于补偿因子对计数总值进行补偿处理,包括:获取所述多个补偿因子的均值,其中,所述多个补偿因子对应多个使用率,所述多个使用率通过多次检测所述设备的处理器的使用率得到;基于所述多个补偿因子的均值对所述计数总值进行补偿处理。
进一步地,基于补偿因子对计数总值进行补偿处理,包括:获取此次补偿的补偿基础,其中,所述此次补偿的补偿基数根据所述计数总值和当前采集的使用率对应的补偿因子得到;获取所述此次补偿的补偿基础与前n次补偿得到的计数总值的均值,其中,n≥0;确定所述均值为此次补偿后的计数总值。
进一步地,基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,包括:将补偿后的计数总值与计时器的当前计数值进行比对,其中,初始计数值为0,每轮询完成一个时间周期,在上一个计数值的基础上加1得到当前计数值;如果计时器的当前计数值大于或等于计数总值,确定完成计时。
进一步地,上述方法还包括:根据场景确定计时精度需求;根据计时精度需求匹配对应的目标计时模式,其中,不同的计时模式的计时精度不同;在目标计时模式下进行计时。
进一步地,根据处理器的使用率确定计数总值对应的补偿因子,包括:获取目标计时模式下,处理器的使用率与补偿因子的对应关系,其中,不同的计时模式下,处理器的使用率与补偿因子具有不同的对应关系;基于对应关系,根据处理器的使用率查找计数总值对应的补偿因子。
进一步地,计时模式包括:第一计时模式、第二计时模式和第三计时模式,其中,第二计时模式的计时精度高于第一计时模式,第三计时模式的计时精度高于第二计时模式,在目标计时模式下进行计时,包括:如果目标计时模式为第一计时模式,则采用单线程以预设的时间周期进行轮询计数,并在计数完成后调用场景对应的回调函数,其中,轮询计数通过第一函数实现;如果目标计时模式为第二计时模式,则采用单线程以预设的时间周期进行轮询计数,并在计数完成后调用场景对应的回调函数,其中,轮询计数通过第二函数实现,第二函数的计时精度高于第一函数;如果目标计时模式为第三计时模式,则通过实时时钟集成电路进行计时。
根据本发明实施例的另一方面,还提供了一种计时器的计时装置,包括:检测模块,用于检测设备的处理器的使用率;第一确定模块,用于根据处理器的使用率确定计数总值对应的补偿因子,其中,计数总值根据预设的计时时间和预设的时间周期确定;补偿模块,用于基于补偿因子对计数总值进行补偿处理;第二确定模块,用于基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,其中,计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上加一得到当前计数值,初始计数值为零。
根据本发明实施例的另一方面,还提供了一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行上述的方法步骤。
根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器和存储器;其中,存储器存储有计算机程序,计算机程序适于由处理器加载并执行上述的方法步骤。
在本发明实施例中,检测设备的处理器的使用率;根据处理器的使用率确定计数总值对应的补偿因子,其中,计数总值根据预设的计时时间和预设的时间周期确定;基于补偿因子对计数总值进行补偿处理;基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,其中,计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上变更得到当前计数值。上述方案通过处理器的使用率确定补偿因子,以对计时器的计数总值进行补偿,从而实现了对计数器的精度补偿,进而达到了减小定时误差的效果,解决了现有技术中由于计时器的计时不准确导致无法满足一些任务的时序需求的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是现有技术的一种计时器的示意图;
图2是根据本发明实施例的计时器的计时方法的流程图;
图3是根据本发明实施例的一种计时器的内部组织结构;以及
图4是根据本发明实施例的计时器的计时装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种计时器的计时方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本发明实施例的计时器的计时方法的流程图,如图2所示,该方法包括如下步骤:
步骤S102,检测设备的处理器的使用率。
具体的,上述处理器的使用率可以为设备CPU的使用率,用于表示设备上所运行的程序占用的CPU资源,可以根据CPU的负载情况来确定。可以用百分比来表示CPU的使用率,当CPU未使用时使用率为0%,满负荷使用时使用率为100%。CPU的使用率越高,设备的响应速度会越慢。
在一种可选的实施例中,在进行精确定时时,可以通过调度线程优先级或进程优先级按照一定的采样周期检测处理的使用率,以对计时进行额外补偿。
步骤S104,根据处理器的使用率确定计数总值对应的补偿因子,其中,计数总值根据预设的计时时间和预设的时间周期确定。
首先对上述计时时间和时间周期进行说明。上述计时时间用于表示实际业务所需要的计时时间,例如,对于一个需要定时显示后自动消失的交互提示框,其所需要的定时显示的时间即为上述计时时间。上述计时周期即为计时的时间片,计时器按照计时周期进行轮询,每轮询过一个计时周期,在计数总值上减一,当计数总值减为0时,此次的计时完成。计数总值根据计时时间和计时周期确定,具体的,计数总值为计时时间与计时周期的比值。
上述补偿因子为0到1之间的数值。在上述方案中,根据预设的计时时间和预设的时间周期确定计数总值后,还需要获取与处理器的使用率对应的补偿因子,以对计数总值进行补偿。该部分补偿用于修正由于处理器的使用率导致计时周期不准确对总体计时所产生的影响。
进一步说明,随着处理器的使用率的变动,预设的计时周期会产生一定的偏差,通常处理器的使用率越高,计时周期的误差也就越大。在该种情况下,上述方案设置与处理器的使用率对应的补偿因子,利用该因子对计数总值进行补偿。例如,如果由于处理器的使用率的升高导致计时周期产生延长,那么通过设置小于1的补偿因子减少计数总值,从而能够在一定程度上修正计时时间的总偏差。
在一种可选的实施例中,可以在如表一所示的表格中记录处理器的使用率与补偿因子的对应关系,并在确定处理器的使用率后,在表格中查找对应的补偿因子。
表一
CPU使用率(%) >90 70-90 50-70 30-50 10-30 <10
补偿因子 K1 K2 K3 K4 K5 K6
步骤S106,基于补偿因子对计数总值进行补偿处理。
在一种可选的实施例中,上述补偿因子可以与计数总数相乘,以对计数总数进行修正。由于处理器中的计时周期并不会缩短,而仅会由于处理器使用率过高而延长,因此补偿因子为0到1之间的数值。
步骤S108,基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,其中,计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上变更得到当前计数值。
在对计数总值进行修正后,则可以使用修正后的计数总值对计时器的计时进行判定。
上述的变更可以为加1或减1。在一种可选的实施例中,初始计数值为0,每次轮询完成一个计时周期后,在上一个计数值的基础上加1。在这种示例中,当某次的计数值大于等于修正后的计数总值时,即可以确定计时完成。在另一种可选的实施例中,初始计数值为修正后的计数总值,每次轮训完一个计时周期后,在修正后的计数总值上减1。在这种示例中,当某次的计数值小于等于0时,即可以确定计时完成。
通过上述方案,计时器的内部组织结构可以如图3所示,结合图3所示,仍然需要创建timer容器,记录timer节点的信息,如计时周期、循环次数、定时回调函数、id等信息,通过计数管理器将计时时间按照计时周期转换为计数值,并由timer计数器确定每次轮询的计数。在计数的过程中,通过系统监控模块采集CPU使用率,并通过线程管理器调度线程优先级以调用补偿程序,使用CPU使用率对计时器的计时进行补偿。例如,车载娱乐系统启动过程中需要显示免责声明3秒,启动过程的CPU使用率非常高(接近100%),在没有补偿的情况下,实际定时可能接近5秒,而如果采用上述方案对计时器的计时精度进行补偿,则可以将误差控制在200ms以内。
由此可知,本申请上述实施例检测设备的处理器的使用率;根据处理器的使用率确定计数总值对应的补偿因子,其中,计数总值根据预设的计时时间和预设的时间周期确定;基于补偿因子对计数总值进行补偿处理;基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,其中,计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上变更得到当前计数值。上述方案通过处理器的使用率确定补偿因子,以对计时器的计数总值进行补偿,从而实现了对计数器的精度补偿,进而达到了减小定时误差的效果,解决了现有技术中由于计时器的计时不准确导致无法满足一些任务的时序需求的技术问题。
作为一种可选的实施例,处理器的使用率与补偿因子呈反比例关系。
在上述方案中,处理器的使用率与补偿因子呈反比例关系,也即,处理器的使用率越大,补偿因子越小。
该设置基于这样一种原理。当处理器的使用率较小时,其能够保障计时周期的准确性,或对计时周期的延迟较小,而补偿因子与计数总值为相乘的关系,因此可以设置一个较大的补偿因子(接近于1的补偿因子),以小程度的减小计数总值。而当处理器的使用率较大时,会对计时周期产生较大的延迟,因此可以设置一个较小的补偿因子,以更大程度的减小计数总值。
由于不同的处理器的性能都不相同,因此处理器的使用率与补偿因子可以基于处理器本身的情况来确定。
作为一种可选的实施例,基于补偿因子对计数总值进行补偿处理,包括:获取多个补偿因子的均值,其中,所述多个补偿因子对应多个使用率,所述多个使用率通过多次检测所述设备的处理器的使用率得到;基于所述多个补偿因子的均值对所述计数总值进行补偿处理。
上述方案是进行一次性补偿的方案。在上述方案中,对设备处理器的使用率进行多次采样,得到每次采样得到的使用率,基于每次采样得到的使用率确定对应的补偿因子,再获取每次采样的使用率对应的补偿因子的平均值作为最终的补偿因子对计数总值进行补偿,补偿的方式可以是使用最终的补偿因子与计数总值相乘,得到补偿后的计数总值。
在一种可选的实施例中,可以通过如下公式基于补偿因子对计数总值进行补偿处理:
Figure BDA0002696541870000061
其中,M表示补偿后的计数总值,T表示预设的计时时间,t表示预设的时间周期,tk表示使用率的采集周期,kn表示补偿因子。
在上述示例中,
Figure BDA0002696541870000062
即为修正前的计数总数。对处理器的使用率进行T/tk次采样后,获取T/tk采样时使用率对应的补偿因子,并求取T/tk次采样的使用率对应的补偿因子的平均值,从而得到处理器的补偿因子平均值,使用补偿因子的平均值与修正前的计数总值相乘,即可得到修正后的补偿因子。
需要说明的是,上述的可选的实施例中的公式仅作为示例,对上述公式的简单形变也属于本申请的保护范围,也即,无论使用何种公式进行计算,通过多次采样获取均值的方式确定最终的补偿因子,并使用最终的补偿因子对计数总值进行补偿的方案均属于本申请的保护范围。例如,在上述公式的基础上,将T/tk取为固定值。
作为一种可选的实施例,基于补偿因子对计数总值进行补偿处理,包括:获取此次补偿的补偿基础,其中,所述此次补偿的补偿基数根据所述计数总值和当前采集的使用率对应的补偿因子得到;获取所述此次补偿的补偿基础与前n次补偿得到的计数总值的均值,其中,n≥0;确定所述均值为此次补偿后的计数总值。
上述方案是进行动态补偿的方案,即补偿因子会随着实时检测的处理器的使用率而变化。在上述方案中,可以使用当前采集的使用率对应的补偿因子与计数总值相乘,得到此次补偿的补偿基础,在将此次补偿的补偿基础与往次补偿后的计数总值的均值作为此次补偿后的计数总值。
作为一种可选的实施例,可以通过如下公式基于补偿因子对计数总值进行补偿处理:
Figure BDA0002696541870000071
其中,Mn表示补偿后的计数总值,T表示预设的计时时间,t表示预设的时间周期,kn表示补偿因子,
Figure BDA0002696541870000072
即构成了此次补偿的补偿基础。
在该方案中,每次采集到处理器的使用率并获取对应的补偿因子后,先通过相乘的方式对修正前的计数总值进行补偿,然后再与往次所有补偿后的修正值相加,并求取平均值,从而得到此次补偿后的计数总值。
需要说明的是,上述实施例中的公式仅作为示例,对上述公式的简单形变也属于本申请的保护范围,也即,无论使用何种公式进行计算,通过上述方式对计数总值进行动态补偿的方案均属于本申请的保护范围。
作为一种可选的实施例,基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,包括:将补偿后的计数总值与计时器的当前计数值进行比对,其中,初始计数值为0,每轮询完成一个时间周期,在上一个计数值的基础上加1得到当前计数值;如果计时器的当前计数值大于或等于计数总值,确定完成计时。
在上述方案中,计数值的初始为0,每次轮询完一个时间周期,就在上一个计数值的基础上加1,当当前的计数值大于等于修正后的计数总值时,认为此次的计数已经完成,也即,当满足
Figure BDA0002696541870000073
时,计时停止,其中m为当前计数值。
作为一种可选的实施例,上述方法还包括:根据场景确定计时精度需求;根据计时精度需求匹配对应的目标计时模式,其中,不同的计时模式的计时精度不同;在目标计时模式下进行计时。
具体的,上述不同的计时模式之间,具有不同的计时精度。
在上述方案中,可以根据定时的使用场景对计时精度的实际需求来选择计时模式。对于对计时精度要求较低的场景,可以选择精度较低的计时模式,而对于计时精度要求较高的场景,可以选择计时精度较高的计时模式,并分别在对应的计时模式下计时。
在一种可选的实施例中,对于一些应用级别的定时场景,例如,交互弹幕的显示、提示信息的显示等,可以选择计时精度较低的计时模式,而对于一些系统级别的定时场景,例如:定时传输心跳数据等,则可以选择计时精度较高的计时模式。
上述方案复合了多场景下计时的精度选择,根据场景对计时的需求选择对应的计时模式,从而能够达到对资源合理利用的效果。
作为一种可选的实施例,根据处理器的使用率确定计数总值对应的补偿因子,包括:获取目标计时模式下,处理器的使用率与补偿因子的对应关系,其中,不同的计时模式下,处理器的使用率与补偿因子具有不同的对应关系;基于对应关系,根据处理器的使用率查找计数总值对应的补偿因子。
在上述方案中,在不同的计时模式下,处理器的使用率与补偿因子之间具有不同的对应关系,即在不同的计时模式下,同样的处理器的使用率可能对应不同的补偿因子,因此在确定目标计时模式后,从目标计时模式下,使用率与补偿因子的对应关系中查找使用率对应的补偿因子,从而能够得到目标计时模式下,当前处理器使用率对应的补偿因子。
作为一种可选的实施例,计时模式包括:第一计时模式、第二计时模式和第三计时模式,其中,第二计时模式的计时精度高于第一计时模式,第三计时模式的计时精度高于第二计时模式,在目标计时模式下进行计时,包括:如果目标计时模式为第一计时模式,则采用单线程以预设的时间周期进行轮询计数,并在计数完成后调用场景对应的回调函数,其中,轮询计数通过第一函数实现;如果目标计时模式为第二计时模式,则采用单线程以预设的时间周期进行轮询计数,并在计数完成后调用场景对应的回调函数,其中,轮询计数通过第二函数实现,第二函数的计时精度高于第一函数;如果目标计时模式为第三计时模式,则通过实时时钟集成电路进行计时。
具体的,上述第一计时模式、第二计时模式以及第三计时模式可以分别为普通计时模式、精确计时模式以及高精度计时模式。在第一计时模式和第二计时模式下,均采用单线程执行函数的方式来对计时周期进行轮询,以完成计时任务,二者的区别在于,第二计时模式在轮询时所使用的第二函数的精确度要大于第一计时模式在轮询时所使用的第一函数的精确度。在一种可选的实施例中,上述第一函数可以为sleep函数,上述第二函数可以为select函数,上述定时时钟集成电路即为RTC时钟。
在一种可选的实施例中,上述普通定时模式可以适用于允许误差大于100ms场景,如系统提示框显示后的定时隐藏,定时查询信息等,该计时模式下,采用单条线程虚拟时间片的方式,进行轮询计数(sleep),计数完毕调用回调函数实现计时功能。上述精确计时模式可以适用于误差大于20ms小于100ms的场景。该计时模式下,采用单线程,配合linuxselect api阻塞实现精确定时。上述高精度计时模式可以适用于误差小于20ms的场景,如串口总线的通信(串口总线的通信在发出消息100ms内必须收到闭环回应,发送方需要设定100ms的等待定时器)等,该计时模式下,可以使用硬件RTC时钟辅助独立计时。
需要说明的是,以上的精度数值和计时模式的分配仅为可选的方式,可以根据实际的使用场景重新界定。可以通过在构建timer api时传入不同的参数(每种参数对应一种计时模式)来进行计时模式的区分,从而采用不同的精度进行计时。
实施例2
根据本发明实施例,提供了一种计时器的计时装置的实施例,图4是根据本发明实施例的计时器的计时装置的示意图,如图4所示,该装置包括:
检测模块42,用于检测设备的处理器的使用率;
第一确定模块44,用于根据处理器的使用率确定计数总值对应的补偿因子,其中,计数总值根据预设的计时时间和预设的时间周期确定;
补偿模块46,用于基于补偿因子对计数总值进行补偿处理;
第二确定模块48,用于基于补偿后的计数总值和计时器的当前计数值确定是否完成计时,其中,计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上加一得到当前计数值,初始计数值为零
作为一种可选的实施例,处理器的使用率与补偿因子呈反比例关系。
作为一种可选的实施例,补偿模块包括:第一获取子模块,用于获取多个补偿因子的均值,其中,所述多个补偿因子对应多个使用率,所述多个使用率通过多次检测所述设备的处理器的使用率得到;补偿子模块,用于基于所述多个补偿因子的均值对所述计数总值进行补偿处理。
作为一种可选的实施例,补偿模块包括:第二获取子模块,用于获取此次补偿的补偿基础,其中,所述此次补偿的补偿基数根据所述计数总值和当前采集的使用率对应的补偿因子得到;第三获取子模块,用于获取所述此次补偿的补偿基础与前n次补偿得到的计数总值的均值,其中,n≥0;第一确定子模块,用于确定所述均值为补偿后的计数总值。
作为一种可选的实施例,第二确定模块包括:比对子模块,用于将补偿后的计数总值与计时器的当前计数值进行比对,其中,初始计数值为0,每轮询完成一个时间周期,在上一个计数值的基础上加1得到当前计数值;第二确定子模块,用于如果计时器的当前计数值大于或等于计数总值,确定完成计时。
作为一种可选的实施例,上述方法还包括:第三确定子模块,用于根据场景确定计时精度需求;匹配子模块,用于根据计时精度需求匹配对应的目标计时模式,其中,不同的计时模式的计时精度不同;计时子模块,用于在目标计时模式下进行计时。
作为一种可选的实施例,第一确定模块包括:获取子模块,用于获取目标计时模式下,处理器的使用率与补偿因子的对应关系,其中,不同的计时模式下,处理器的使用率与补偿因子具有不同的对应关系;查找子模块,用于基于对应关系,根据处理器的使用率查找计数总值对应的补偿因子。
作为一种可选的实施例,计时模式包括:第一计时模式、第二计时模式和第三计时模式,其中,第二计时模式的计时精度高于第一计时模式,第三计时模式的计时精度高于第二计时模式,计时子模块包括:第一计时单元,用于如果目标计时模式为第一计时模式,则采用单线程以预设的时间周期进行轮询计数,并在计数完成后调用场景对应的回调函数,其中,轮询计数通过第一函数实现;第二计时单元,用于如果目标计时模式为第二计时模式,则采用单线程以预设的时间周期进行轮询计数,并在计数完成后调用场景对应的回调函数,其中,轮询计数通过第二函数实现,第二函数的计时精度高于第一函数;第三计时单元,用于如果目标计时模式为第三计时模式,则通过实时时钟集成电路进行计时。
实施例3
根据本发明实施例,提供了一种计算机存储介质,计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行实施例1所述的方法步骤。
实施例4
根据本发明实施例,提供了一种电子设备,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如实施例1所述的方法步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (11)

1.一种计时器的计时方法,其特征在于,包括:
检测设备的处理器的使用率;
根据所述处理器的使用率确定计数总值对应的补偿因子,其中,所述计数总值根据预设的计时时间和预设的时间周期确定;
基于所述补偿因子对所述计数总值进行补偿处理;
基于补偿后的计数总值和所述计时器的当前计数值确定是否完成计时,其中,所述计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上变更得到当前计数值。
2.根据权利要求1所述的方法,其特征在于,所述处理器的使用率与所述补偿因子呈反比例关系。
3.根据权利要求1所述的方法,其特征在于,基于所述补偿因子对所述计数总值进行补偿处理,包括:
获取多个补偿因子的均值,其中,所述多个补偿因子对应多个使用率,所述多个使用率通过多次检测所述设备的处理器的使用率得到;
基于所述多个补偿因子的均值对所述计数总值进行补偿处理。
4.根据权利要求1所述的方法,其特征在于,基于所述补偿因子对所述计数总值进行补偿处理,包括:
获取此次补偿的补偿基础,其中,所述此次补偿的补偿基数根据所述计数总值和当前采集的使用率对应的补偿因子得到;
获取所述此次补偿的补偿基础与前n次补偿得到的计数总值的均值,其中,n≥0;
确定所述均值为此次补偿后的计数总值。
5.根据权利要求1所述的方法,其特征在于,基于补偿后的计数总值和所述计时器的当前计数值确定是否完成计时,包括:
将补偿后的计数总值与所述计时器的当前计数值进行比对,其中,初始计数值为0,每轮询完成一个时间周期,在上一个计数值的基础上加1得到当前计数值;
如果所述计时器的当前计数值大于或等于所述计数总值,确定完成计时。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述方法还包括:
根据场景确定计时精度需求;
根据所述计时精度需求匹配对应的目标计时模式,其中,不同的计时模式的计时精度不同;
在所述目标计时模式下进行计时。
7.根据权利要求6所述的方法,其特征在于,根据所述处理器的使用率确定计数总值对应的补偿因子,包括:
获取目标计时模式下,处理器的使用率与补偿因子的对应关系,其中,不同的计时模式下,处理器的使用率与补偿因子具有不同的对应关系;
基于所述对应关系,根据所述处理器的使用率查找计数总值对应的补偿因子。
8.根据权利要求6所述的方法,其特征在于,所述计时模式包括:第一计时模式、第二计时模式和第三计时模式,其中,所述第二计时模式的计时精度高于所述第一计时模式,所述第三计时模式的计时精度高于所述第二计时模式,在所述目标计时模式下进行计时,包括:
如果所述目标计时模式为所述第一计时模式,则采用单线程以预设的时间周期进行轮询计数,并在计数完成后调用所述场景对应的回调函数,其中,所述轮询计数通过第一函数实现;
如果所述目标计时模式为所述第二计时模式,则采用单线程以预设的时间周期进行轮询计数,并在计数完成后调用所述场景对应的回调函数,其中,所述轮询计数通过第二函数实现,所述第二函数的计时精度高于所述第一函数;
如果所述目标计时模式为所述第三计时模式,则通过实时时钟集成电路进行计时。
9.一种计时器的计时装置,其特征在于,包括:
检测模块,用于检测设备的处理器的使用率;
第一确定模块,用于根据所述处理器的使用率确定计数总值对应的补偿因子,其中,所述计数总值根据预设的计时时间和预设的时间周期确定;
补偿模块,用于基于所述补偿因子对所述计数总值进行补偿处理;
第二确定模块,用于基于补偿后的计数总值和所述计时器的当前计数值确定是否完成计时,其中,所述计时器通过轮询进行计时,每轮询完成一个时间周期,在上一个计数值的基础上加一得到当前计数值,初始计数值为零。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1至8中任意一项的方法步骤。
11.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1至8中任意一项的方法步骤。
CN202011007733.XA 2020-09-23 2020-09-23 计时器的计时方法和装置 Pending CN112162820A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011007733.XA CN112162820A (zh) 2020-09-23 2020-09-23 计时器的计时方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011007733.XA CN112162820A (zh) 2020-09-23 2020-09-23 计时器的计时方法和装置

Publications (1)

Publication Number Publication Date
CN112162820A true CN112162820A (zh) 2021-01-01

Family

ID=73864336

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011007733.XA Pending CN112162820A (zh) 2020-09-23 2020-09-23 计时器的计时方法和装置

Country Status (1)

Country Link
CN (1) CN112162820A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114120616A (zh) * 2021-11-24 2022-03-01 深圳市欧瑞博科技股份有限公司 红外信号发送方法、装置、电子设备及存储介质

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002047281A1 (en) * 2000-12-07 2002-06-13 Qualcomm Incorporated Method and apparatus for compensating for frequency drift in a low frequency sleep clock within a mobile station operating in a slotted paging mode
US20030133470A1 (en) * 2002-01-17 2003-07-17 Yuji Tanaka Polling device and communication apparatus
CN1633644A (zh) * 2000-12-29 2005-06-29 英特尔公司 用于确定cpu利用率的独立于操作系统的方法和系统
CN1798201A (zh) * 2004-12-22 2006-07-05 华为技术有限公司 通信网中防止负荷过载的控制方法及系统
CN102231907A (zh) * 2011-06-27 2011-11-02 中兴通讯股份有限公司 传输系统中的时钟同步方法和装置
CN103135661A (zh) * 2011-12-01 2013-06-05 拉碧斯半导体株式会社 时间测量装置、微型控制器、程序以及时间测量方法
CN104572414A (zh) * 2014-12-23 2015-04-29 深圳市邦彦信息技术有限公司 一种用于vxWorks的CPU占用率检测方法和系统
CN104897250A (zh) * 2015-06-25 2015-09-09 华南理工大学 一种抗强谐波干扰的多台位流量计脉冲计数补偿方法
CN105022693A (zh) * 2015-08-10 2015-11-04 网易(杭州)网络有限公司 一种应用程序的性能测试方法及装置
JP2015195514A (ja) * 2014-03-31 2015-11-05 沖電気工業株式会社 中継装置
CN105528246A (zh) * 2015-12-07 2016-04-27 厦门雅迅网络股份有限公司 一种基于动态计时周期的进程内定时器管理方法及系统
CN106708709A (zh) * 2015-07-30 2017-05-24 中兴通讯股份有限公司 Cpu占用率检测方法及装置
JP2018190108A (ja) * 2017-04-28 2018-11-29 富士通株式会社 制御プログラム、制御方法及び制御装置
CN109828826A (zh) * 2019-01-10 2019-05-31 新华三云计算技术有限公司 一种任务进度的轮询方法、装置及系统
US20190294473A1 (en) * 2018-03-23 2019-09-26 Carolina Cloud Exchange Inc. Quantifying usage of disparate computing resources as a single unit of measure
CN111538369A (zh) * 2020-04-17 2020-08-14 北京中科宇航技术有限公司 一种三模冗余计算机时钟同步方法及其系统

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002047281A1 (en) * 2000-12-07 2002-06-13 Qualcomm Incorporated Method and apparatus for compensating for frequency drift in a low frequency sleep clock within a mobile station operating in a slotted paging mode
CN1633644A (zh) * 2000-12-29 2005-06-29 英特尔公司 用于确定cpu利用率的独立于操作系统的方法和系统
US20030133470A1 (en) * 2002-01-17 2003-07-17 Yuji Tanaka Polling device and communication apparatus
CN1798201A (zh) * 2004-12-22 2006-07-05 华为技术有限公司 通信网中防止负荷过载的控制方法及系统
CN102231907A (zh) * 2011-06-27 2011-11-02 中兴通讯股份有限公司 传输系统中的时钟同步方法和装置
CN103135661A (zh) * 2011-12-01 2013-06-05 拉碧斯半导体株式会社 时间测量装置、微型控制器、程序以及时间测量方法
JP2015195514A (ja) * 2014-03-31 2015-11-05 沖電気工業株式会社 中継装置
CN104572414A (zh) * 2014-12-23 2015-04-29 深圳市邦彦信息技术有限公司 一种用于vxWorks的CPU占用率检测方法和系统
CN104897250A (zh) * 2015-06-25 2015-09-09 华南理工大学 一种抗强谐波干扰的多台位流量计脉冲计数补偿方法
CN106708709A (zh) * 2015-07-30 2017-05-24 中兴通讯股份有限公司 Cpu占用率检测方法及装置
CN105022693A (zh) * 2015-08-10 2015-11-04 网易(杭州)网络有限公司 一种应用程序的性能测试方法及装置
CN105528246A (zh) * 2015-12-07 2016-04-27 厦门雅迅网络股份有限公司 一种基于动态计时周期的进程内定时器管理方法及系统
JP2018190108A (ja) * 2017-04-28 2018-11-29 富士通株式会社 制御プログラム、制御方法及び制御装置
US20190294473A1 (en) * 2018-03-23 2019-09-26 Carolina Cloud Exchange Inc. Quantifying usage of disparate computing resources as a single unit of measure
CN109828826A (zh) * 2019-01-10 2019-05-31 新华三云计算技术有限公司 一种任务进度的轮询方法、装置及系统
CN111538369A (zh) * 2020-04-17 2020-08-14 北京中科宇航技术有限公司 一种三模冗余计算机时钟同步方法及其系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
郝允志;周黔;: "动态频率测量的滞后误差分析及改进方法", 仪器仪表学报, no. 01 *
郭锐锋;孔祥君;陈红梅;徐慧芳;: "运动控制中的调度抖动补偿方法的研究与应用", 小型微型计算机系统, no. 02 *
黄民双;刘晓晨;马鹏;: "脉冲飞行时间激光测距系统中周期误差补偿", 红外与激光工程, no. 03 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114120616A (zh) * 2021-11-24 2022-03-01 深圳市欧瑞博科技股份有限公司 红外信号发送方法、装置、电子设备及存储介质
CN114120616B (zh) * 2021-11-24 2023-03-28 深圳市欧瑞博科技股份有限公司 红外信号发送方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US20190238581A1 (en) Method, apparatus and system for detecting abnormal behavior of user
CN107040578A (zh) 数据同步方法、装置和系统
CN109460364A (zh) 应用程序检测方法、装置、存储介质及移动终端
CN103023984A (zh) 终端应用服务器及其应用日志过滤方法
CN113900913B (zh) 确定功耗方法、装置、计算机设备及计算机可读存储介质
CN112162820A (zh) 计时器的计时方法和装置
CN108647102B (zh) 异构系统的服务请求处理方法、装置和电子设备
CN113194339A (zh) 直播榜单生成方法、装置、电子设备和可读存储介质
CN104123303A (zh) 一种提供数据的方法及装置
CN111338575A (zh) 一种存储服务质量控制方法、装置、设备及存储介质
CN109325015B (zh) 一种领域模型的特征字段的提取方法及装置
CN108920326B (zh) 确定系统耗时异常的方法、装置及电子设备
CN116680151A (zh) 硬盘性能动态监控方法、系统、终端及存储介质
US10819896B1 (en) Computer readable recording medium can perform image sensing system control method and image sensing system
CN109213589B (zh) 一种消息处理的方法及装置
CN111428197A (zh) 数据处理方法、装置及设备
CN113628392B (zh) 时间管理方法、装置及存储介质
CN113453261B (zh) 异常小区识别方法、装置和电子设备
CN113439252B (zh) 终端控制方法、装置、存储介质及电子设备
CN109041058B (zh) 一种wifi热点连接的方法和装置
CN113608960A (zh) 一种服务监控方法、装置、电子设备及存储介质
CN111611143A (zh) 数据处理方法及装置、电子设备和计算机可读存储介质
CN110659178A (zh) 系统运行状态调节方法、装置及存储介质、电子设备
CN112737614A (zh) 一种抗干扰方法、装置、设备及可读存储介质
CN112581150A (zh) 一种信息管理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210101