CN104503761A - 一种利用时间转盘处理定时任务的方法和装置 - Google Patents
一种利用时间转盘处理定时任务的方法和装置 Download PDFInfo
- Publication number
- CN104503761A CN104503761A CN201410844083.2A CN201410844083A CN104503761A CN 104503761 A CN104503761 A CN 104503761A CN 201410844083 A CN201410844083 A CN 201410844083A CN 104503761 A CN104503761 A CN 104503761A
- Authority
- CN
- China
- Prior art keywords
- rotating disk
- timed task
- drive gear
- current time
- scale
- 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
Landscapes
- Measurement Of Predetermined Time Intervals (AREA)
Abstract
本发明公开了一种利用时间转盘处理定时任务的方法和装置,所述时间转盘中设置有当前时间刻度指针,该方法包括以下步骤:当监听到时间间隔触发器事件后,在所述时间转盘上移动所述当前时间刻度指针;获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务,将所述定时任务转移到任务处理线程或任务处理线程池进行处理。本发明使用时间转盘达到了定时器的效果,并将对定时任务的处理放到线程上下文,能够处理存在睡眠和阻塞现象的任务,且无需针对任务数量的增加而增加线程,降低了对系统资源的耗费。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种利用时间转盘处理定时任务的方法和装置。
背景技术
在Linux系统中进行应用程序设计时,经常涉及到对定时任务的处理,尤其是在用户空间开发应用程序时。由于Linux系统没有提供类似与内核空间定时器的接口,现有技术通常在用户空间通常使用SIGALRM信号定时器接口alarm和setitimer等,或者对每个定时任务分配一个处理线程,并在处理任务之前,通过调用睡眠函数使该任务睡眠一会,从而达到定时处理的效果。
然而,上述两种方法均存在弊端:前者的弊端在于,信号定时器是在软中断上下文执行的,当被处理的任务存在睡眠或者因互斥锁而阻塞现象时,会导致程序异常;后者的弊端在于,每个定时任务需要单独占用一个线程,线程中调用的睡眠函数甚至也有可能占用一个线程,而用户空间中可运行的线程是有限的,且线程本身也需要消耗一定的资源成本,因此,该方法能处理的定时任务的数量是有限的,且需要耗费过多的资源。
发明内容
本发明提供了一种利用时间转盘处理定时任务的方法和装置,以解决现有技术中无法有效地处理定时任务的缺陷。
本发明提供了一种利用时间转盘处理定时任务的方法,所述时间转盘中设置有当前时间刻度指针,所述方法包括以下步骤:
当监听到时间间隔触发器事件后,在所述时间转盘上移动所述当前时间刻度指针;
获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务,将所述定时任务转移到任务处理线程或任务处理线程池进行处理。
可选地,所述获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务之前,还包括:
判断所述当前时间刻度指针对应的转盘刻度上是否挂载有定时任务;
所述获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务之前,具体为:
当所述当前时间刻度指针对应的刻度上挂载有定时任务时,获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务。
可选地,所述的方法,还包括:
将新的定时任务挂载到所述时间转盘的转盘刻度上。
可选地,所述将新的定时任务挂载到所述时间转盘的转盘刻度上,具体为:
根据所述新的定时任务的定时时间和所述当前时间刻度指针对应的转盘刻度,计算所述新的定时任务对应的转盘刻度,将所述新的定时任务挂载到计算得到的转盘刻度上。
可选地,所述时间转盘是通过数组或环形的链表结构实现的。
本发明还提供了一种利用时间转盘处理定时任务的装置,所述时间转盘中设置有当前时间刻度指针,所述装置包括:
监听模块,用于监听时间间隔触发器事件;
设置模块,用于在所述监听模块监听到时间间隔触发器事件后,在所述时间转盘上移动所述当前时间刻度指针;
获取模块,用于获取所述设置模块移动后的所述当前时间刻度指针对应的转盘刻度上挂载的定时任务;
转移模块,用于将所述获取模块获取到的所述定时任务转移到任务处理线程或任务处理线程池进行处理。
可选地,所述的装置,还包括:
判断模块,用于判断所述当前时间刻度指针对应的转盘刻度上是否挂载有定时任务;
所述获取模块,具体用于在所述判断模块判断出所述当前时间刻度指针对应的刻度上挂载有定时任务时,获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务。
可选地,所述的装置,还包括:
挂载模块,用于将新的定时任务挂载到所述时间转盘的转盘刻度上。
可选地,所述挂载模块,具体用于根据所述新的定时任务的定时时间和所述当前时间刻度指针对应的转盘刻度,计算所述新的定时任务对应的转盘刻度,将所述新的定时任务挂载到计算得到的转盘刻度上。
可选地,所述时间转盘是通过数组或环形的链表结构实现的。
本发明使用时间转盘达到了定时器的效果,并将对定时任务的处理放到线程上下文,能够处理存在睡眠和阻塞现象的任务,且无需针对任务数量的增加而增加线程,降低了对系统资源的耗费。
附图说明
图1为本发明实施例中的一种利用时间转盘处理定时任务的方法流程图;
图2为本发明实施例中的一种时间转盘的示意图;
图3为本发明实施例中的一种利用时间转盘处理定时任务的装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种利用时间转盘处理定时任务的方法,该时间转盘中设置有当前时间刻度指针,该方法如图1所示,包括以下步骤:
步骤101,将新的定时任务挂载到时间转盘的转盘刻度上。
具体地,根据新的定时任务的定时时间和当前时间刻度指针对应的转盘刻度,计算新的定时任务对应的转盘刻度,将新的定时任务挂载到计算得到的转盘刻度上。其中,时间转盘是通过数组或环形的链表结构实现的。
本实施例中的时间转盘,如图2所示,由多个小格组成,每个小格代表一个转盘刻度。针对上述时间转盘,需要预先定义间隔粒度、最大定时时长、当前时间刻度指针、实现时间转盘、时间间隔触发器,以及任务处理线程或任务处理线程池,在转盘刻度上定义一个任务指针,用于挂载任务链。其中,当前时间刻度指针用于记录当前时刻的位置,时间间隔触发器采用单独的一个线程实现,以触发当前时间刻度指针的移动。例如,定义时间转盘的间隔粒度为1秒,最大定时时长为10分钟,即600秒,因此,在时间转盘上定义600个转盘刻度。具体地,可以使用环形的链表结构实现,每个链表节点代表一个转盘刻度;也可以采用大小为600个元素的数组表示,以快速计算定时任务的转盘刻度位置。
进一步地,当需要设置新的定时任务时,可以根据当前时间刻度指针计算该任务应该挂载的位置。例如,当前时间刻度指针指向转盘刻度m时,如果新的定时任务需要在1秒后被处理,则将该任务挂载到转盘刻度m+1上;如果新的定时任务需要在9秒后被处理,则将该任务挂载到转盘刻度m+9上。
步骤102,监听时间间隔触发器事件。
步骤103,当监听到时间间隔触发器事件后,在时间转盘上移动当前时间刻度指针。
具体地,当监听到时间间隔触发器事件后,将当前时间刻度指针向后移动一个转盘刻度。
步骤104,判断当前时间刻度指针对应的转盘刻度上是否挂载有定时任务,如果是,则执行步骤105;否则,返回步骤102。
步骤105,获取当前时间刻度指针对应的转盘刻度上挂载的定时任务,将定时任务转移到任务处理线程或任务处理线程池进行处理。
本发明实施例使用时间转盘达到了定时器的效果,并将对定时任务的处理放到线程上下文,能够处理存在睡眠和阻塞现象的任务,且无需针对任务数量的增加而增加线程,降低了对系统资源的耗费。
基于上述利用时间转盘处理定时任务的方法,本发明实施例还提供了一种利用时间转盘处理定时任务的装置,该时间转盘中设置有当前时间刻度指针,该装置包括:
监听模块310,用于监听时间间隔触发器事件。
设置模块320,用于在监听模块310监听到时间间隔触发器事件后,在时间转盘上移动当前时间刻度指针。
其中,时间转盘是通过数组或环形的链表结构实现的。
获取模块330,用于获取设置模块320移动后的当前时间刻度指针对应的转盘刻度上挂载的定时任务。
转移模块340,用于将获取模块330获取到的定时任务转移到任务处理线程或任务处理线程池进行处理。
进一步地,上述装置,还包括:
判断模块350,用于判断当前时间刻度指针对应的转盘刻度上是否挂载有定时任务。
相应地,上述获取模块330,具体用于在判断模块350判断出当前时间刻度指针对应的刻度上挂载有定时任务时,获取当前时间刻度指针对应的转盘刻度上挂载的定时任务。
进一步地,上述装置,还包括:
挂载模块360,用于将新的定时任务挂载到时间转盘的转盘刻度上。
具体地,上述挂载模块360,具体用于根据新的定时任务的定时时间和当前时间刻度指针对应的转盘刻度,计算新的定时任务对应的转盘刻度,将新的定时任务挂载到计算得到的转盘刻度上。
本发明实施例使用时间转盘达到了定时器的效果,并将对定时任务的处理放到线程上下文,能够处理存在睡眠和阻塞现象的任务,且无需针对任务数量的增加而增加线程,降低了对系统资源的耗费。
结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种利用时间转盘处理定时任务的方法,其特征在于,所述时间转盘中设置有当前时间刻度指针,所述方法包括以下步骤:
当监听到时间间隔触发器事件后,在所述时间转盘上移动所述当前时间刻度指针;
获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务,将所述定时任务转移到任务处理线程或任务处理线程池进行处理。
2.如权利要求1所述的方法,其特征在于,所述获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务之前,还包括:
判断所述当前时间刻度指针对应的转盘刻度上是否挂载有定时任务;
所述获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务之前,具体为:
当所述当前时间刻度指针对应的刻度上挂载有定时任务时,获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务。
3.如权利要求1所述的方法,其特征在于,还包括:
将新的定时任务挂载到所述时间转盘的转盘刻度上。
4.如权利要求3所述的方法,其特征在于,所述将新的定时任务挂载到所述时间转盘的转盘刻度上,具体为:
根据所述新的定时任务的定时时间和所述当前时间刻度指针对应的转盘刻度,计算所述新的定时任务对应的转盘刻度,将所述新的定时任务挂载到计算得到的转盘刻度上。
5.如权利要求1所述的方法,其特征在于,所述时间转盘是通过数组或环形的链表结构实现的。
6.一种利用时间转盘处理定时任务的装置,其特征在于,所述时间转盘中设置有当前时间刻度指针,所述装置包括:
监听模块,用于监听时间间隔触发器事件;
设置模块,用于在所述监听模块监听到时间间隔触发器事件后,在所述时间转盘上移动所述当前时间刻度指针;
获取模块,用于获取所述设置模块移动后的所述当前时间刻度指针对应的转盘刻度上挂载的定时任务;
转移模块,用于将所述获取模块获取到的所述定时任务转移到任务处理线程或任务处理线程池进行处理。
7.如权利要求6所述的装置,其特征在于,还包括:
判断模块,用于判断所述当前时间刻度指针对应的转盘刻度上是否挂载有定时任务;
所述获取模块,具体用于在所述判断模块判断出所述当前时间刻度指针对应的刻度上挂载有定时任务时,获取所述当前时间刻度指针对应的转盘刻度上挂载的定时任务。
8.如权利要求6所述的装置,其特征在于,还包括:
挂载模块,用于将新的定时任务挂载到所述时间转盘的转盘刻度上。
9.如权利要求8所述的装置,其特征在于,
所述挂载模块,具体用于根据所述新的定时任务的定时时间和所述当前时间刻度指针对应的转盘刻度,计算所述新的定时任务对应的转盘刻度,将所述新的定时任务挂载到计算得到的转盘刻度上。
10.如权利要求6所述的装置,其特征在于,所述时间转盘是通过数组或环形的链表结构实现的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410844083.2A CN104503761A (zh) | 2014-12-30 | 2014-12-30 | 一种利用时间转盘处理定时任务的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410844083.2A CN104503761A (zh) | 2014-12-30 | 2014-12-30 | 一种利用时间转盘处理定时任务的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104503761A true CN104503761A (zh) | 2015-04-08 |
Family
ID=52945162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410844083.2A Pending CN104503761A (zh) | 2014-12-30 | 2014-12-30 | 一种利用时间转盘处理定时任务的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104503761A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250108A (zh) * | 2016-07-18 | 2016-12-21 | 中国电子科技集团公司第二十八研究所 | 一种线程中挂时控的方法 |
CN106775965A (zh) * | 2016-11-17 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种定时任务的处理方法及装置 |
CN107634993A (zh) * | 2017-09-05 | 2018-01-26 | 腾讯科技(深圳)有限公司 | 一种信息推送事件处理方法、装置及电子设备 |
CN107797856A (zh) * | 2017-09-27 | 2018-03-13 | 天津同阳科技发展有限公司 | 基于windows服务的计划任务管控方法、装置及存储介质 |
CN109697592A (zh) * | 2018-12-21 | 2019-04-30 | 江苏满运软件科技有限公司 | 基于环形数组的货源下架方法、系统、设备及存储介质 |
CN109857533A (zh) * | 2019-01-23 | 2019-06-07 | 深圳智链物联科技有限公司 | 一种定时任务调度方法、装置及智能终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713630A (zh) * | 2004-06-25 | 2005-12-28 | 华为技术有限公司 | 一种触发相对定时器的方法 |
CN1862575A (zh) * | 2005-08-19 | 2006-11-15 | 华为技术有限公司 | 计划调度定时任务的方法 |
CN101859260A (zh) * | 2010-05-14 | 2010-10-13 | 中国科学院计算技术研究所 | 用于操作系统中的定时器管理装置和管理方法 |
CN102752282A (zh) * | 2012-05-30 | 2012-10-24 | 苏州云初网络技术有限公司 | 一种定时器管理模块 |
CN103106222A (zh) * | 2011-11-15 | 2013-05-15 | 阿里巴巴集团控股有限公司 | 定时器的处理方法及装置 |
-
2014
- 2014-12-30 CN CN201410844083.2A patent/CN104503761A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713630A (zh) * | 2004-06-25 | 2005-12-28 | 华为技术有限公司 | 一种触发相对定时器的方法 |
CN1862575A (zh) * | 2005-08-19 | 2006-11-15 | 华为技术有限公司 | 计划调度定时任务的方法 |
CN101859260A (zh) * | 2010-05-14 | 2010-10-13 | 中国科学院计算技术研究所 | 用于操作系统中的定时器管理装置和管理方法 |
CN103106222A (zh) * | 2011-11-15 | 2013-05-15 | 阿里巴巴集团控股有限公司 | 定时器的处理方法及装置 |
CN102752282A (zh) * | 2012-05-30 | 2012-10-24 | 苏州云初网络技术有限公司 | 一种定时器管理模块 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250108A (zh) * | 2016-07-18 | 2016-12-21 | 中国电子科技集团公司第二十八研究所 | 一种线程中挂时控的方法 |
CN106250108B (zh) * | 2016-07-18 | 2019-05-17 | 中国电子科技集团公司第二十八研究所 | 一种线程中挂时控的方法 |
CN106775965A (zh) * | 2016-11-17 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种定时任务的处理方法及装置 |
CN106775965B (zh) * | 2016-11-17 | 2021-03-23 | 腾讯科技(深圳)有限公司 | 一种定时任务的处理方法及装置 |
CN107634993A (zh) * | 2017-09-05 | 2018-01-26 | 腾讯科技(深圳)有限公司 | 一种信息推送事件处理方法、装置及电子设备 |
CN107797856A (zh) * | 2017-09-27 | 2018-03-13 | 天津同阳科技发展有限公司 | 基于windows服务的计划任务管控方法、装置及存储介质 |
CN107797856B (zh) * | 2017-09-27 | 2020-12-18 | 天津同阳科技发展有限公司 | 基于windows服务的计划任务管控方法、装置及存储介质 |
CN109697592A (zh) * | 2018-12-21 | 2019-04-30 | 江苏满运软件科技有限公司 | 基于环形数组的货源下架方法、系统、设备及存储介质 |
CN109857533A (zh) * | 2019-01-23 | 2019-06-07 | 深圳智链物联科技有限公司 | 一种定时任务调度方法、装置及智能终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104503761A (zh) | 一种利用时间转盘处理定时任务的方法和装置 | |
US10394655B2 (en) | Method for detecting abnormal application and mobile terminal | |
US10013511B2 (en) | System and method for energy usage accounting in software applications | |
CN108089856B (zh) | 一种页面元素的监听方法及装置 | |
CN102597912B (zh) | 用于平台功率节省的协调设备和应用程序中断事件 | |
CN104410535A (zh) | 一种云资源智能监控告警方法 | |
US10521294B2 (en) | Patrol scrub periods based on power status | |
CN106155806B (zh) | 一种多任务调度方法及服务器 | |
EP3436944B1 (en) | Fast transfer of workload between multiple processors | |
US9471477B2 (en) | Monitoring and capturing early diagnostic data | |
JP2013545207A5 (zh) | ||
EP3523720B1 (en) | Task scheduling | |
JP2014123354A5 (zh) | ||
US20160047679A1 (en) | Sensor power management | |
US9575766B2 (en) | Causing an interrupt based on event count | |
US20160180487A1 (en) | Load balancing at a graphics processing unit | |
US9965295B2 (en) | Creating a custom series of commands | |
CN111930215A (zh) | 用于虚拟平台模拟的功率监测系统 | |
CN103746835A (zh) | 一种下载数据的方法及装置 | |
CN104298507A (zh) | 资源的处理方法及装置 | |
CN103533184A (zh) | 一种减少手机待机功耗的方法 | |
US20160342354A1 (en) | Saving the Architectural State of a Computing Device using Sectors | |
US20220027278A1 (en) | Techniques for core-specific metrics collection | |
CN103902371A (zh) | 一种用户态程序获取内核jiffies的方法和系统 | |
US9684355B2 (en) | Identifying power state changes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150408 |