CN115268565A - 定时器的控制方法、装置及电子设备 - Google Patents
定时器的控制方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115268565A CN115268565A CN202210737537.0A CN202210737537A CN115268565A CN 115268565 A CN115268565 A CN 115268565A CN 202210737537 A CN202210737537 A CN 202210737537A CN 115268565 A CN115268565 A CN 115268565A
- Authority
- CN
- China
- Prior art keywords
- timer
- target
- time
- queue
- callback
- 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
- 238000000034 method Methods 0.000 title claims abstract description 271
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 7
- 230000007774 longterm Effects 0.000 abstract description 6
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/06—Clock generators producing several clock signals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Electric Clocks (AREA)
Abstract
本发明实施例提供了种定时器的控制方法、装置及电子设备。所述方法包括:在每一帧周期检测定时器的执行时间;其中,每一所述定时器包括用于在所述执行时间执行的回调方法;在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法;其中,所述第一目标定时器为执行时间早于或等于当前时间的定时器。本发明实施例不仅实现了在定时器到期的情况下执行相应的回调方法;同时由于不再使用CPU时钟进行计时,避免了长期计时的场景下定时器延迟过大的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种定时器的控制方法、装置及电子设备。
背景技术
定时器是通信协议正常运行的基本要素之一,主要用于各种定时任务。其中,Java中的定时器(timer)是应用程序中的一种定时工具,用来在后台线程计划执行指定任务。例如某一应用程序,如果这个应用程序每天生成的日志数据很多。为避免积累过多的日志数据,需要隔一段时间删除一次日志数据,那么就需要用到定时器。
目前,在开发过程中通常使用编程语言提供的原生定时器,利用中央处理器(central processing unit,简称CPU)自带的时钟,即CPU时钟进行计时。
然而,由于CPU时钟本身的限制,在CPU时钟进行长期计时的场景下使得定时器将产生较大的延迟。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的定时器的控制方法、装置及电子设备。
第一方面,本发明实施例提供了一种定时器的控制方法,所述方法包括:
在每一帧周期检测定时器的执行时间;其中,每一所述定时器包括用于在所述执行时间执行的回调方法;
在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法;其中,所述第一目标定时器为执行时间早于或等于当前时间的定时器。
可选地,所述在每一帧周期检测定时器的执行时间,包括:
在每一帧周期检测定时器队列中定时器的执行时间;其中,所述定时器队列包括多个定时器;
在检测到第一目标定时器的情况下,所述方法还包括:
将所述第一目标定时器从所述定时器队列中移除。
可选地,在每一帧周期检测定时器队列中定时器的执行时间之前,所述方法还包括:
在基于目标回调方法注册定时器的情况下,确定目标时间;其中,所述目标时间为执行所述目标回调方法的时间;
在所述定时器队列中存在执行时间与所述目标时间相同的第二目标定时器的情况下,将所述目标回调方法确定为所述第二目标定时器新增的回调方法。
可选地,所述定时器队列中的多个定时器按照执行时间从早到晚的顺序排列。
可选地,在所述第一目标定时器的回调方法为周期性执行的方法的情况下,所述执行所述第一目标定时器的回调方法,包括:
执行一次所述第一目标定时器的回调方法;
在所述定时器队列中添加新定时器,并将所述新定时器的执行时间设置为计算时间;其中,所述计算时间为所述第一目标定时器当前的执行时间累加至少一个执行周期得到的晚于当前时刻的时间,且当前时刻到所述计算时间之间的时长小于或等于一个所述执行周期。
可选地,所述第一目标定时器的回调方法的数量为多个,且所述第一目标定时器的多个回调方法位于同一目标方法队列中;
所述执行所述第一目标定时器的回调方法,包括:
每次执行所述目标方法队列中的第一个回调方法,且在每次执行完一个回调方法后将本次已执行的回调方法从所述目标方法队列中移除,直至所述目标方法队列为空。
第二方面,本发明实施例还提供一种定时器的控制装置,所述装置包括:
检测模块,用于在每一帧周期检测定时器的执行时间;其中,每一所述定时器包括用于在所述执行时间执行的回调方法;
执行模块,用于在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法;其中,所述第一目标定时器为执行时间早于或等于当前时间的定时器。
可选地,所述执行模块,具体用于在每一帧周期检测定时器队列中定时器的执行时间;其中,所述定时器队列包括多个定时器;
所述装置还包括:
移除模块,用于将所述第一目标定时器从所述定时器队列中移除。
第三方面,本发明实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的定时器的控制方法中的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的定时器的控制方法中的步骤。
在本发明实施例中,在每一帧周期检测定时器的执行时间,其中,定时器包括回调方法,执行时间为执行定时器的回调方法的时间,该执行时间为时间点而非时长。基于定时器的执行时间,可以确定执行时间早于或等于当前时间的第一目标定时器,即到期的定时器。进而在在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法。其不仅实现了在定时器到期的情况下执行相应的回调方法;同时由于不再使用CPU时钟进行计时,避免了长期计时的场景下定时器延迟过大的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的定时器的控制方法的步骤流程图;
图2为本发明实施例提供的注册定时器的步骤流程图;
图3为本发明实施例提供的定时器的控制方法的实际应用流程图;
图4为本发明实施例提供的定时器的控制装置的结构框图;
图5为本发明实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
参见图1,本发明实施例提供了一种定时器的控制方法,该方法可以包括:
步骤101:在每一帧周期检测定时器的执行时间。
本步骤中,帧周期可以理解为刷新频率的倒数。例如刷新频率为50赫兹,则帧周期为20毫秒。其中,该刷新频率可以为电子设备的屏幕刷新或前端页面刷新等事件的刷新频率。这里,针对每一注册成功的定时器,其包含有需要在某一时间点执行的回调方法以及该时间点。该时间点即为执行时间,从而通过执行时间可以确定定时器是否到期。也就是说,每一定时器设置有至少两个参数,即至少包括回调方法和执行时间,其中,回调方法需要在执行时间执行。具体的,每一定时器包括用于在执行时间执行的回调方法。可以理解的是,回调方法和执行时间的具体内容均与业务相关,这里不做限定。例如,某一业务中,需要在未来的某一时间点刷新前端页面,并在前端页面中显示一倒计时控件,则回调方法可以为一刷新前端页面,并在前端页面中显示一倒计时控件的方法,执行时间可以为该未来的某一时间点。
步骤102:在检测到第一目标定时器的情况下,执行第一目标定时器的回调方法。
本步骤中,第一目标定时器为执行时间早于或等于当前时间的定时器,也就是到期的定时器。在检测定时器时,将定时器的执行时间与当前时间进行比较,可以快速确定到期的定时器。可以理解的是,定时器到期后将执行其回调方法。因此,在检测到到期的第一目标定时器的情况下,将立即执行第一目标定时器的回调方法。由于各定时器的执行时间与具体业务相关,因此不同定时器的执行时间可以相同或者不同。所以第一目标定时器的数量可以为一个或者多个,这里对其数量并不做限定。
各定时器的回调方法的数量同样与具体业务相关,这里并不对回调方法的数量进行限定,其可以为一个或者多个。但当执行某一定时器的回调方法时,将执行该定时器的所有回调方法。也就是说将执行第一目标定时器的所有回调方法。可以理解的是,当多个方法需要在同一时间点执行时,可以将该多个方法注入同一定时器中作为该定时器的回调方法,并将该定时器的执行时间设置为该同一时间点。也就是说,该定时器的回调方法的数量为多个,其执行时间为该同一时间点。从而在该定时器到期(时间到达该同一时间点)时,同时执行该多个回调方法。
本发明实施例中,在每一帧周期检测定时器的执行时间,其中,定时器包括回调方法,执行时间为执行定时器的回调方法的时间,该执行时间为时间点而非时长。基于定时器的执行时间,可以确定执行时间早于或等于当前时间的第一目标定时器,即到期的定时器。进而在在检测到第一目标定时器的情况下,执行第一目标定时器的回调方法。其不仅实现了在定时器到期的情况下执行相应的回调方法;同时由于不再使用CPU时钟进行计时,避免了长期计时的场景下定时器延迟过大的问题。
可选地,在每一帧周期检测定时器的执行时间,包括:
在每一帧周期检测定时器队列中定时器的执行时间;其中,定时器队列包括多个定时器;
在检测到第一目标定时器的情况下,该方法还包括:
将第一目标定时器从定时器队列中移除。
应当说明的是,定时器队列用于存储所有未被执行回调方法的定时器,其具体数量由具体业务决定,通常为多个,但不限于多个。例如每注册成功一个定时器,将注册成功的定时器添加到定时器队列中,从而在对所有定时器进行检测时,只需找到定时器队列对定时器队列中的定时器进行检测即可。
可以理解的是,当定时器队列中的第一目标定时器的回调方法已被或者将要被执行时,说明该第一目标定时器已经到期。通过将第一目标定时器从定时器队列中移除,可以保证下次在定时器队列的所有定时器中检测到期的定时器时,不会检测到该第一目标定时器,从而避免重复执行第一目标定时器的回调方法。较佳地,可以在执行第一目标定时器的回调方法之后,将第一目标定时器从定时器队列中移除。
本发明实施例中,利用定时器队列对定时器进行存储,同时将已执行或将要执行回调方法的定时器从定时器队列中移除,可以避免同一定时器的回调方法被多次执行。
可选地,在每一帧周期检测定时器队列中定时器的执行时间之前,该方法还包括:
在基于目标回调方法注册定时器的情况下,确定目标时间;其中,目标时间为执行目标回调方法的时间。
应当说明的是,在需要某一时间点执行某一个或多个回调方法的情况下,将注册定时器,基于注册成功的定时器实现在该时间点执行回调方法的需求。这里的目标回调方法即为该某一个或多个回调方法,目标时间即为该某一时间点。
在定时器队列中存在执行时间与目标时间相同的第二目标定时器的情况下,将目标回调方法确定为第二目标定时器新增的回调方法。
应当说明的是,在定时器队列中存在执行时间与目标时间相同的第二目标定时器的情况下,无需将该目标回调方法所属的定时器添加到定时器队列中,只需将目标回调方法注入第二目标定时器中即可。在定时器队列中不存在执行时间与目标时间相同的第二目标定时器的情况下,则将该目标回调方法所属的定时器添加到定时器队列中。具体过程可参见图2所示,包括:
步骤201:注册定时器,该定时器的回调方法为目标回调方法,执行时间为目标时间。
步骤202:检测定时器队列。定时器队列中包括已注册成功的且未被执行回调方法的所有定时器。其中,定时器队列中的定时器可以时间节点的形式进行存储。时间节点的具体时间为定时器的执行时间。
步骤203:判断定时器队列中是否存在与新注册的定时器的执行时间相同的定时器或时间节点。若是则执行步骤206,若否则执行步骤204。
步骤204:基于新注册的定时器生成新的时间节点。
步骤205:将新的时间节点插入定时器队列中。
步骤206:将目标回调方法注入第二目标定时器的回调方法队列中,其中,第二目标定时器为执行时间与新注册的定时器的执行时间相同的定时器。例如新注册的定时器为定时器A,定时器A的执行时间为2022年4月18日10点15分25秒,定时器A的回调方法包括回调方法a。假如定时器队列中定时器B,定时器B的执行时间为2022年4月18日10点15分25秒,定时器B的回调方法包括回调方法b,则无需将定时器A添加到定时器队列,只需将回调方法a添加到定时器B的回调方法中,使得定时器B的回调方法包括回调方法a和回调方法b即可。
本发明实施例中,在注册定时器时,若定时器队列中已存在与新注册的定时器的执行时间相同的定时器,可以仅将新注册的定时器的回调方法注入定时器队列中相应的定时器,从而在一定程度上避免定时器队列中定时器数量过多的问题。
可选地,定时器队列中的多个定时器按照执行时间从早到晚的顺序排列。
应当说明的是,在定时器队列中的多个定时器按照执行时间从早到晚的顺序排列的情况下,定时器队列中每一定时器的执行时间都将早于其后面的所有定时器的执行时间。因此,在检测定时器队列中定时器的执行时间时,可以从执行时间最早的定时器一侧开始检测,若检测到执行时间最早的定时器晚于当前时间,则在当前帧周期无需对后续定时器进行检测。若检测到执行时间最早的定时器早于当前时间,则向另一侧的方向依次检测定时器直至首次检测到执行时间晚于当前时间的定时器停止检测。
本发明实施例中,将定时器队列中的定时器按照执行时间从早到晚的顺序进行排列,可以有效降低检测的定时器的数量。
可选地,在第一目标定时器的回调方法为周期性执行的方法的情况下,执行第一目标定时器的回调方法,包括:
执行一次第一目标定时器的回调方法;
在定时器队列中添加新定时器,并将新定时器的执行时间设置为计算时间;其中,计算时间为第一目标定时器当前的执行时间累加至少一个执行周期得到的晚于当前时刻的时间,且当前时刻到计算时间之间的时长小于或等于一个执行周期。
应当说明的是,周期性执行的方法需要每隔预设时长执行一次。该预设时长即为执行周期。例如某一周期性执行的方法需要每隔1秒钟执行一次,则执行周期为1秒钟。由于周期性执行的方法每次只需执行一次,因此可以在执行完一次之后,重新生成用于执行相同方法的定时器。此时,只需将重新生成的定时器的执行时间设置为计算时间即可。例如,第一目标定时器的执行时间为2022年5月18日10点35分25秒,其回调方法为周期性执行的方法且执行周期为两秒钟。在执行一次第一目标定时器的回调方法之后,在定时器队列中新添加一定时器,该新添加的定时器的回调方法与第一目标定时器的回调方法相同,执行时间为2022年5月18日10点35分27秒。可以理解的是,新定时器的执行时间应当晚于当前时间,否则新定时器将会成为到期的定时器,从而再次执行回调方法,造成回调方法连续执行的问题。当然,新定时器的执行时间也不应当晚于当前时间太久,这样会造成其回调方法长时间不能执行的问题。因此,在确定新定时器的执行时间时,可以在原定时器的执行时间上不断的累加执行周期,当首次出现晚于当前时间的累加值时,将该累加值作为新定时器的执行时间。例如,第一目标定时器的执行时间为2022年5月18日10点35分,其回调方法为周期性执行的方法且执行周期为两分钟。在执行一次第一目标定时器的回调方法过程中,由于网络或系统问题,导致该回调方法在2022年5月18日10点40分执行完毕,此时在定时器队列中新添加一定时器,该新添加的定时器的回调方法与第一目标定时器的回调方法相同,执行时间应当为2022年5月18日10点35分累加至少一个两分钟,得到的首次晚于2022年5月18日10点40分的某一时间。即执行时间=2022年5月18日10点35分+3×2分=2022年5月18日10点41分。这里,若定时器队列中已存在执行时间与计算时间相同的定时器,可以无需往定时器队列中添加新定时器,只需将新定时器的回调方法注入执行时间与计算时间相同的定时器即可。
本发明实施例中,对于需要周期性执行的回调方法,在每次执行之后,在定时器队列中添加用于执行下次回调方法的定时器;相比于更新定时器的执行时间,更加便于实现。
可选地,第一目标定时器的回调方法的数量为多个,且第一目标定时器的多个回调方法位于同一目标方法队列中;
执行第一目标定时器的回调方法,包括:
每次执行目标方法队列中的第一个回调方法,且在每次执行完一个回调方法后将本次已执行的回调方法从目标方法队列中移除,直至目标方法队列为空。
应当说明的是,在每次执行完回调方法后将已执行的回调方法从目标方法队列中移除,使得每次执行完回调方法后,目标方法队列的第一个回调方法均为未被执行的回调方法。例如第一目标定时器的目标方法队列包括回调方法A、回调方法B、回调方法C三个回调方法,在首次执行目标方法队列的第一个回调方法时,将执行回调方法A,并在执行完回调方法A后,将回调方法A从目标方法队列中移除,从而目标方法队列包括回调方法B、回调方法C两个回调方法。再次执行目标方法队列的第一个回调方法时,将执行回调方法B,并在执行完回调方法B后,将回调方法B从目标方法队列中移除,从而目标方法队列包括回调方法C一个回调方法。再次执行目标方法队列的第一个回调方法时,将执行回调方法C,并在执行完回调方法C后,将回调方法C从目标方法队列中移除,此时目标方法队列为空。
本发明实施例中,通过队列的形式将同一定时器的回调方法存储在一起,从而便于管理;同时,通过将已执行的回调方法从目标方法队列中移除,可以避免多次执行同一回调方法。
如图3所示,为本发明实施例提供的定时器的控制方法的实际应用示意图,包括:
步骤301:进入帧周期。
步骤302:检测定时器队列,其中,定时器队列中包括已注册成功的且未被执行回调方法的所有定时器。其中,定时器队列中的定时器以时间节点的形式进行存储。时间节点的具体时间为定时器的执行时间。
步骤303:判断定时器队列中是否存在目标节点,即执行时间早于或等于当前时间的定时器(相当于上述发明实施例中的第一目标定时器,这里步骤赘述)。若是则执行步骤304,若否则等待进入下一帧周期。
步骤304:将目标节点从定时器队列中移除。
步骤305:取出并移除目标节点的回调方法队列中的第一项,即取出目标节点所表征的定时器的目标方法队列的第一个回调方法。
步骤306:执行一次取出的回调方法。
步骤307:判断取出的回调方法是否需要周期执行。若是则执行步骤308,若否则执行步骤309。
步骤308:基于取出的回调方法注册新的定时器,并将新的定时器添加到定时器队列中。其中新定时器的执行时间的计算方式为:原定时器的执行时间累加回调方法的至少一个执行周期,且新定时器的执行时间晚于当前时刻,且当前时刻到新定时器的执行时间之间的时长小于或等于一个执行周期。
步骤309:判断回调方法列表是否已清空,若是则执行步骤310,若否则执行步骤305。
步骤310:结束帧周期。这里,需要在定时器队列中不存在早于或等于当前时间的节点的情况下,结束检测并等待进入下一个帧周期。
本发明实施例中,注册定时器时基于某一个准确的时间点,无需利用CPU时钟,从而可以提升长期执行时的准确度。基于帧循环进行定时器队列检测,可以避免在某些情况下同一个渲染周期内多次执行同一定时器的情况发送,避免性能损耗。进一步定时器是全局生效的,在不同模块下使用此定时器不会有额外的成本。
以上介绍了本发明实施例提供的定时器的控制方法,下面将结合附图介绍本发明实施例提供的定时器的控制装置。
如图4所示,本发明实施例提供了一种定时器的控制装置,该装置包括:
检测模块41,用于在每一帧周期检测定时器的执行时间;其中,每一定时器包括用于在执行时间执行的回调方法;
执行模块42,用于在检测到第一目标定时器的情况下,执行第一目标定时器的回调方法;其中,第一目标定时器为执行时间早于或等于当前时间的定时器。
可选地,执行模块42,具体用于在每一帧周期检测定时器队列中定时器的执行时间;其中,定时器队列包括多个定时器;
该装置还包括:
移除模块,用于在检测到第一目标定时器的情况下,将第一目标定时器从定时器队列中移除。
可选地,该装置还包括:
第一注册模块,用于在基于目标回调方法注册定时器的情况下,确定目标时间;其中,目标时间为执行目标回调方法的时间;
第二注册模块,用于在定时器队列中存在执行时间与目标时间相同的第二目标定时器的情况下,将目标回调方法确定为第二目标定时器新增的回调方法。
可选地,定时器队列中的多个定时器按照执行时间从早到晚的顺序排列。
可选地,在第一目标定时器的回调方法为周期性执行的方法的情况下,执行模块42,具体用于执行一次第一目标定时器的回调方法;在定时器队列中添加新定时器,并将新定时器的执行时间设置为计算时间;其中,计算时间为第一目标定时器当前的执行时间累加至少一个执行周期得到的晚于当前时刻的时间,且当前时刻到计算时间之间的时长小于或等于一个执行周期。
可选地,第一目标定时器的回调方法的数量为多个,且第一目标定时器的多个回调方法位于同一目标方法队列中;执行模块42,具体用于每次执行目标方法队列中的第一个回调方法,且在每次执行完一个回调方法后将本次已执行的回调方法从目标方法队列中移除,直至目标方法队列为空。
本发明实施例提供的定时器的控制装置能够实现图1~图3的方法实施例中定时器的控制方法实现的各个过程,为避免重复,这里不再赘述。
本发明的实施例中,在每一帧周期检测定时器的执行时间,其中,定时器包括回调方法,执行时间为执行定时器的回调方法的时间,该执行时间为时间点而非时长。基于定时器的执行时间,可以确定执行时间早于或等于当前时间的第一目标定时器,即到期的定时器。进而在在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法。其不仅实现了在定时器到期的情况下执行相应的回调方法;同时由于不再使用CPU时钟进行计时,避免了长期计时的场景下定时器延迟过大的问题。
另一方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述定时器的控制方法中的步骤。
举个例子如下,图5示出了一种电子设备的实体结构示意图。
如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如下方法:
在每一帧周期检测定时器的执行时间;其中,每一所述定时器包括用于在所述执行时间执行的回调方法;
在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法;其中,所述第一目标定时器为执行时间早于或等于当前时间的定时器。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的定时器的控制方法,例如包括:
在每一帧周期检测定时器的执行时间;其中,每一所述定时器包括用于在所述执行时间执行的回调方法;
在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法;其中,所述第一目标定时器为执行时间早于或等于当前时间的定时器。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种定时器的控制方法,其特征在于,所述方法包括:
在每一帧周期检测定时器的执行时间;其中,每一所述定时器包括用于在所述执行时间执行的回调方法;
在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法;其中,所述第一目标定时器为执行时间早于或等于当前时间的定时器。
2.根据权利要求1所述的方法,其特征在于,所述在每一帧周期检测定时器的执行时间,包括:
在每一帧周期检测定时器队列中定时器的执行时间;其中,所述定时器队列包括多个定时器;
在检测到第一目标定时器的情况下,所述方法还包括:
将所述第一目标定时器从所述定时器队列中移除。
3.根据权利要求2所述的方法,其特征在于,在每一帧周期检测定时器队列中定时器的执行时间之前,所述方法还包括:
在基于目标回调方法注册定时器的情况下,确定目标时间;其中,所述目标时间为执行所述目标回调方法的时间;
在所述定时器队列中存在执行时间与所述目标时间相同的第二目标定时器的情况下,将所述目标回调方法确定为所述第二目标定时器新增的回调方法。
4.根据权利要求2所述的方法,其特征在于,所述定时器队列中的多个定时器按照执行时间从早到晚的顺序排列。
5.根据权利要求2所述的方法,其特征在于,在所述第一目标定时器的回调方法为周期性执行的方法的情况下,所述执行所述第一目标定时器的回调方法,包括:
执行一次所述第一目标定时器的回调方法;
在所述定时器队列中添加新定时器,并将所述新定时器的执行时间设置为计算时间;其中,所述计算时间为所述第一目标定时器的执行时间累加至少一个执行周期得到的晚于当前时刻的时间,且当前时刻到所述计算时间之间的时长小于或等于一个所述执行周期。
6.根据权利要求1所述的方法,其特征在于,所述第一目标定时器的回调方法的数量为多个,且所述第一目标定时器的多个回调方法位于同一目标方法队列中;
所述执行所述第一目标定时器的回调方法,包括:
每次执行所述目标方法队列中的第一个回调方法,且在每次执行完一个回调方法后将本次已执行的回调方法从所述目标方法队列中移除,直至所述目标方法队列为空。
7.一种定时器的控制装置,其特征在于,所述装置包括:
检测模块,用于在每一帧周期检测定时器的执行时间;其中,每一所述定时器包括用于在所述执行时间执行的回调方法;
执行模块,用于在检测到第一目标定时器的情况下,执行所述第一目标定时器的回调方法;其中,所述第一目标定时器为执行时间早于或等于当前时间的定时器。
8.根据权利要求7所述的装置,其特征在于,所述执行模块,具体用于在每一帧周期检测定时器队列中定时器的执行时间;其中,所述定时器队列包括多个定时器;
所述装置还包括:
移除模块,用于将所述第一目标定时器从所述定时器队列中移除。
9.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的定时器的控制方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的定时器的控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210737537.0A CN115268565A (zh) | 2022-06-27 | 2022-06-27 | 定时器的控制方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210737537.0A CN115268565A (zh) | 2022-06-27 | 2022-06-27 | 定时器的控制方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115268565A true CN115268565A (zh) | 2022-11-01 |
Family
ID=83764683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210737537.0A Pending CN115268565A (zh) | 2022-06-27 | 2022-06-27 | 定时器的控制方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115268565A (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044286A1 (en) * | 2003-08-19 | 2005-02-24 | Choong-Bin Lim | Device for controlling endpoints of USB device and method of controlling endpoints of USB device |
US20070147394A1 (en) * | 2005-12-22 | 2007-06-28 | Keith Iain Wilkinson | Method and apparatus for processing timers |
US20080013450A1 (en) * | 2006-04-03 | 2008-01-17 | Worley John S | System and method for time-out management |
CN101359294A (zh) * | 2008-10-09 | 2009-02-04 | 北京佳讯飞鸿电气股份有限公司 | 一种嵌入式系统定时器的管理方法 |
US20110050846A1 (en) * | 2009-08-27 | 2011-03-03 | Sean Miceli | Method and Apparatus for Displaying 3D Multi-Viewpoint Camera Video Over a Network |
US20130067489A1 (en) * | 2011-09-09 | 2013-03-14 | Microsoft Corporation | Power Efficient Callback Patterns |
CN103324469A (zh) * | 2012-03-21 | 2013-09-25 | 腾讯科技(深圳)有限公司 | 定时器实现方法及装置 |
WO2015144014A1 (zh) * | 2014-03-24 | 2015-10-01 | 三和智控(北京)系统集成有限公司 | 通过计划队列实现控制逻辑的动态延时调用的方法及装置 |
US9424075B1 (en) * | 2015-01-30 | 2016-08-23 | Amazon Technologies, Inc. | Dynamic virtual partitioning for delayed queues |
US20160378573A1 (en) * | 2015-06-25 | 2016-12-29 | International Business Machines Corporation | Scalable RCU Callback Offloading |
WO2017096734A1 (zh) * | 2015-12-10 | 2017-06-15 | 腾讯科技(深圳)有限公司 | 一种程序检测方法及装置 |
CN111695061A (zh) * | 2019-03-15 | 2020-09-22 | 北京京东尚科信息技术有限公司 | 一种资源处理方法及装置、设备、存储介质 |
-
2022
- 2022-06-27 CN CN202210737537.0A patent/CN115268565A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044286A1 (en) * | 2003-08-19 | 2005-02-24 | Choong-Bin Lim | Device for controlling endpoints of USB device and method of controlling endpoints of USB device |
US20070147394A1 (en) * | 2005-12-22 | 2007-06-28 | Keith Iain Wilkinson | Method and apparatus for processing timers |
US20080013450A1 (en) * | 2006-04-03 | 2008-01-17 | Worley John S | System and method for time-out management |
CN101359294A (zh) * | 2008-10-09 | 2009-02-04 | 北京佳讯飞鸿电气股份有限公司 | 一种嵌入式系统定时器的管理方法 |
US20110050846A1 (en) * | 2009-08-27 | 2011-03-03 | Sean Miceli | Method and Apparatus for Displaying 3D Multi-Viewpoint Camera Video Over a Network |
US20130067489A1 (en) * | 2011-09-09 | 2013-03-14 | Microsoft Corporation | Power Efficient Callback Patterns |
CN103324469A (zh) * | 2012-03-21 | 2013-09-25 | 腾讯科技(深圳)有限公司 | 定时器实现方法及装置 |
WO2015144014A1 (zh) * | 2014-03-24 | 2015-10-01 | 三和智控(北京)系统集成有限公司 | 通过计划队列实现控制逻辑的动态延时调用的方法及装置 |
US9424075B1 (en) * | 2015-01-30 | 2016-08-23 | Amazon Technologies, Inc. | Dynamic virtual partitioning for delayed queues |
US20160378573A1 (en) * | 2015-06-25 | 2016-12-29 | International Business Machines Corporation | Scalable RCU Callback Offloading |
WO2017096734A1 (zh) * | 2015-12-10 | 2017-06-15 | 腾讯科技(深圳)有限公司 | 一种程序检测方法及装置 |
CN111695061A (zh) * | 2019-03-15 | 2020-09-22 | 北京京东尚科信息技术有限公司 | 一种资源处理方法及装置、设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110213356B (zh) | 一种基于数据处理的登录处理方法及相关设备 | |
JP2566726B2 (ja) | データ処理方法および装置 | |
CN102999387A (zh) | 进程运行装置及方法 | |
CN112473131A (zh) | 实现游戏运行的方法和装置、计算机可读存储介质 | |
CN113157426B (zh) | 一种任务调度方法、系统、设备及存储介质 | |
CN113542256A (zh) | 客户端中登录凭证的更新方法、装置、设备及存储介质 | |
CN115268565A (zh) | 定时器的控制方法、装置及电子设备 | |
CN112987904B (zh) | 一种心跳控制方法和装置 | |
CN110362554B (zh) | 定时器的设定方法、装置、设备及计算机可读存储介质 | |
CN112463348B (zh) | 一种定时任务处理方法及装置 | |
CN112000492B (zh) | 公众号用户标签的管理系统及方法 | |
CN112306758B (zh) | 备份成功率预测方法、装置、设备及存储介质 | |
CN114443925A (zh) | 安卓应用的获取方法、装置、电子设备、介质及产品 | |
CN112035203A (zh) | 一种接口轮询方法、装置、设备及存储介质 | |
CN107967181B (zh) | 临界区的控制方法及装置 | |
CN110933068A (zh) | 黑白名单实时优化方法、装置、服务器及存储介质 | |
JP3711789B2 (ja) | システム自動再立ち上げ制御方法およびシステム自動再立ち上げ制御システム | |
CN114138433B (zh) | 一种任务定时策略的方法、装置及介质 | |
CN113687916B (zh) | 数据处理方法及装置、时间更新方法及装置、电子设备 | |
CN112069025A (zh) | 锁过期事件的处理方法及装置 | |
CN113760632B (zh) | 线程池性能监控方法、装置、设备和存储介质 | |
CN115134033A (zh) | 时间同步方法、装置、电子设备及计算机可读存储介质 | |
JPH1021194A (ja) | アプリケーションプログラムの誤動作防止システム、誤 動作 防止方法および誤動作防止用プログラムを記憶した記憶 媒体 | |
CN117350810A (zh) | 一种订单超时未支付自动取消方法、存储介质及设备 | |
CN118011896A (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 |
Application publication date: 20221101 |