定时器任务的处理方法、软件定时器及存储介质与流程



1.本发明涉及计算机技术领域,尤其涉及一种定时器任务的处理方法、软件定时器及存储介质。


背景技术:



2.目前,已有的软件定时器实现思想是,定时器扫描与超时由专门的定时器扫描任务来完成,在多核多线程的并发架构下,由于定时器设置任务和定时器扫描任务需要访问相同的定时器资源,导致设置定时器的多个任务间、设置定时器的任务与定时器扫描任务间存在较多的锁冲突,且扫描工作集中到一个任务来做,在大规模使用定时器情况下易导致瓶颈,特别是在高caps(call attempts per second,每秒建立呼叫数量)场景下,对系统性能的影响十分明显。


技术实现要素:



3.本发明的目的在于至少解决现有技术中存在的技术问题之一,提供一种定时器任务的处理方法、软件定时器及存储介质,能够避免在大规模使用定时器情况下,扫描工作集中到一个任务引起瓶颈。
4.第一方面,本发明实施例提供一种定时器任务的处理方法,包括:
5.第一任务设置有线程化的第一定时器队列所述第一任务设置定时器时,将所述定时器设置到所述第一定时器队列,并将所述第一任务中最早到时的定时器设置给定时器扫描任务;
6.若所述定时器扫描任务检测到所述第一任务中最早到时的定时器到时,向所述第一任务发送定时器到时通知;
7.所述第一任务根据所述定时器到时通知,扫描所述第一定时器队列。
8.第二方面,本发明实施例提供一种软件定时器,包括定时器设置模块和定时器扫描模块,其中:
9.所述定时器设置模块用于将第一任务设置的定时器设置到所述第一任务的线程化的第一定时器队列,并将所述第一任务中最早到时的定时器设置给定时器扫描任务;
10.所述定时器扫描模块用于检测所述第一任务中最早到时的定时器是否到时,并在所述第一任务中最早到时的定时器到时的情况下向所述第一任务发送定时器到时通知;以及用于在所述第一任务接收到所述定时器到时通知的情况下,扫描所述第一定时器队列。
11.第三方面,本发明实施例提供一种运行控制装置,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如上第一方面实施例所述的定时器任务的处理方法。
12.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上第一方面实施
例所述的定时器任务的处理方法。
13.本发明实施例包括:定时器任务的处理方法、软件定时器、运行控制装置及计算机可读存储介质。根据本发明实施例提供的方案,第一任务通过将定时器设置到线程化的第一定时器队列,第一定时器队列的扫描工作由设置定时器的第一任务自身来做,定时器扫描任务只起到基本的超时作用,主要的定时器扫描工作分摊到不同的任务完成,避免在大规模使用定时器情况下,扫描工作集中到一个任务引起瓶颈,通过采用线程化的思想来避免软件定时器锁冲突的问题,从而提高系统吞吐率,适用于多核多线程并发环境中,系统大量使用软件定时器的场景。
14.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
15.附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
16.下面结合附图和实施例对本发明进一步地说明;
17.图1是本发明实施例提供的一种定时器任务的处理方法的整体框图;
18.图2是本发明实施例提供的一种定时器任务的处理方法的原理框图;
19.图3是本发明实施例提供的软件定时器从定时器设置到超时的工作流程图;
20.图4是本发明实施例提供的软件定时器的结构示意图;
21.图5是本发明实施例提供的运行控制装置的结构示意图。
具体实施方式
22.本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
23.在本发明的描述中,如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
24.本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
25.本发明实施例提供一种定时器任务的处理方法、软件定时器及存储介质,能够避免在大规模使用定时器情况下,扫描工作集中到一个任务引起瓶颈。
26.下面结合附图,对本发明实施例作进一步阐述。
27.参照图1和图2,图1是本发明实施例提供的一种定时器任务的处理方法的整体框图;
28.图2是本发明实施例提供的一种定时器任务的处理方法的原理框图。
29.本发明的第一方面实施例提供一种定时器任务的处理方法,包括:
30.第一任务设置有线程化的第一定时器队列,所述第一任务设置定时器时,将所述定时器设置到所述第一定时器队列,并将所述第一任务中最早到时的定时器设置给定时器扫描任务;
31.若所述定时器扫描任务检测到所述第一任务中最早到时的定时器到时,向所述第一任务发送定时器到时通知;
32.所述第一任务根据所述定时器到时通知,扫描所述第一定时器队列。
33.根据本发明实施例提供的定时器任务的处理方法,第一任务通过将定时器设置到线程化的第一定时器队列,第一定时器队列的扫描工作由设置定时器的第一任务自身来做,定时器扫描任务只起到基本的超时作用,主要的定时器扫描工作分摊到不同的任务完成,避免在大规模使用定时器情况下,扫描工作集中到一个任务引起瓶颈,通过采用线程化的思想来避免软件定时器锁冲突的问题,从而提高系统吞吐率,适用于多核多线程并发环境中,系统大量使用软件定时器的场景。
34.在上述定时器任务的处理方法中,第二任务设置有线程化的第二定时器队列,所述第二任务设置定时器时,将所述定时器设置到所述第二定时器队列,并将所述第二任务中最早到时的定时器设置给定时器扫描任务;所述定时器扫描任务设置有定时器数组,所述定时器数组存储有所述第一任务的最早到时的定时器和所述第二任务的最早到时的定时器。
35.可以理解的是,还可以有第三任务、第四任务以及更多的任务,这些任务处理定时器任务时采用的方法与第一任务和第二任务同理,这些任务均设置有自身的定时器队列,设置定时器时将定时器设置到自身的定时器队列,并将自身的定时器队列中最早到时的定时器设置给定时器扫描任务的定时器数组,定时器扫描任务的定时器数组存储有各个任务的最早到时的定时器。当定时器扫描任务检测到某一个任务的最早到时的定时器到时,则向该任务发送定时器到时通知,使得该任务根据收到的定时器到时通知扫描自身的定时器队列。
36.在上述定时器任务的处理方法中,所述定时器扫描任务轮询检测所述定时器数组中的所有任务的最早到时的定时器。
37.定时器扫描任务的定时器数组中,可以存储有第一任务的最早到时的定时器,还有可能存储有其他多个任务的最早到时的定时器,即定时器数组有可能存储有多个任务的最早到时的定时器,通过询检测定时器数组中的所有任务的最早到时的定时器,可以逐一检测多个任务的最早到时的定时器是否到时,若到时则发送到时通知给到相应的任务。
38.参照图2,在上述定时器任务的处理方法中,所述第一任务还设置有用于对设置到所述第一定时器队列的定时器进行查重的查重队列,所述查重队列采用红黑树数据结构
39.通过设置查重队列,用于对重复设置的定时器进行检查,采用红黑树数据结构来组织查重队列,可以兼具查和增删两种操作的平衡性,速度快,资源占用少。
40.在上述定时器任务的处理方法中,所述第一定时器队列采用红黑树数据结构、二叉树数据结构、多叉数数据结构、数组数据结构或者链表数据结构。
41.可以理解的是,第二任务的第二定时器队列以及其他任务的定时器队列也可以同理采用红黑树数据结构、二叉树数据结构、多叉数数据结构、数组数据结构或者链表数据结构,本技术对其不作限制。
42.下面参照图3对上述的定时器任务的处理方法进行详细介绍,图3是本发明实施例提供的软件定时器从定时器设置到超时的工作流程图。
43.第一任务的用户设置设置定时器,首先通过查重队列检查定时器是否重复设置,然后将定时器设置到第一任务的线程化的第一定时器队列中,判断该定时器是否是第一任务的最早到时定时器,若是则将第一任务的最早到时的定时器设置给定时器扫描任务的定时器数组;定时器扫描任务检测第一任务最早到时的定时器是否到时,若是则向第一任务发送到时通知;第一任务开始扫描自身的第一定时器队列,发定时器超时通知给第一任务设置定时器的用户,使得用户可以处理定时器超时消息。
44.参照图4,图4是本发明实施例提供的软件定时器的结构示意图。
45.本发明的第二方面实施例提供一种软件定时器,包括定时器设置模块410和定时器扫描模块420,其中:
46.所述定时器设置模块410:用于将第一任务设置的定时器设置到所述第一任务的线程化的第一定时器队列,并将所述第一任务中最早到时的定时器设置给定时器扫描任务。定时器队列采用红给树数据结构来组织。另外,还有一个红黑树数据结构来组织的查重队列,用于对重复设置的定时器进行检查,红黑树数据结构可以兼具查和增删两种操作的平衡性,速度快,资源占用少。
47.所述定时器扫描模420:包括两部分,第一部分是用于检测所述第一任务中最早到时的定时器是否到时,并在所述第一任务中最早到时的定时器到时的情况下向所述第一任务发送定时器到时通知;第二部分是用于在所述第一任务接收到所述定时器到时通知的情况下,扫描所述第一定时器队列。整个过程采用线程化技术,无需加锁,并采用了红黑树/哈希等高效率算法,从而提高了性能。
48.需要说明的是,本实施例使用的红黑树/哈希数据结构算法不是唯一的实现本实施例的算法,可采用其他的数据结构算法如普通二叉树、多叉数、数组、链表等来实现本实施例。
49.第一任务的用户使用本实施例提供的定时器设置模块410提供的接口来设置定时器,将定时器任务设置到第一任务的线程化的定时器队列中,同时判断该定时器是否是第一任务的最早到时的定时器,如果是,将该定时器设置给定时器扫描任务。待定时器扫描任务检测到第一任务的最早到时定时器到时,通知第一任务,第一任务开始扫描自身的定时器队列,发超时通知给设置定时器的用户,用户处理定时器超时通知。整个过程访问的是线程化的数据资源,没有锁开销,提高了系统吞吐率。同时,这一过程中,相关定时器资源的使用是动态弹缩的,避免使用大量定时器时对系统资源的大量占用。
50.采用本发明实施例的定时器任务的处理方法和软件定时器,与其他软件定时器实现方法相比,在多核多线程并发架构中,能全程做到无锁操作,避免锁开销,提高系能性能,且主要的定时器工作由多个任务分摊完成,避免集中到一个任务引起瓶颈,有利于定时器的大规模使用。同时,相关定时器资源的使用是动态弹缩的,避免使用大量定时器时对系统资源的大量占用。适用于多核多线程并发环境中,系统大量使用软件定时器的场景。
51.参照图5,图5是本发明实施例提供的运行控制装置500的结构示意图。
52.本发明的第三方面实施例提供一种运行控制装置500,包括至少一个控制处理器510和用于与所述至少一个控制处理器510通信连接的存储器520;所述存储器520存储有可
被所述至少一个控制处理器510执行的指令,所述指令被所述至少一个控制处理器510执行,以使所述至少一个控制处理器510能够执行如上第一方面实施例所述的定时器任务的处理方法。
53.根据本发明实施例提供的运行控制装置500,第一任务通过将定时器设置到线程化的第一定时器队列,第一定时器队列的扫描工作由设置定时器的第一任务自身来做,定时器扫描任务只起到基本的超时作用,主要的定时器扫描工作分摊到不同的任务完成,避免在大规模使用定时器情况下,扫描工作集中到一个任务引起瓶颈,通过采用线程化的思想来避免软件定时器锁冲突的问题,从而提高系统吞吐率,适用于多核多线程并发环境中,系统大量使用软件定时器的场景。
54.另外,本发明的第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上第一方面实施例所述的定时器任务的处理方法。
55.根据本发明实施例提供的计算机可读存储介质,第一任务通过将定时器设置到线程化的第一定时器队列,第一定时器队列的扫描工作由设置定时器的第一任务自身来做,定时器扫描任务只起到基本的超时作用,主要的定时器扫描工作分摊到不同的任务完成,避免在大规模使用定时器情况下,扫描工作集中到一个任务引起瓶颈,通过采用线程化的思想来避免软件定时器锁冲突的问题,从而提高系统吞吐率,适用于多核多线程并发环境中,系统大量使用软件定时器的场景。
56.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质或非暂时性介质和通信介质或暂时性介质。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息诸如计算机可读指令、数据结构、程序模块或其他数据的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘dvd或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
57.上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所述技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

技术特征:


1.一种定时器任务的处理方法,其特征在于,包括:第一任务设置有线程化的第一定时器队列,所述第一任务设置定时器时,将所述定时器设置到所述第一定时器队列,并将所述第一任务中最早到时的定时器设置给定时器扫描任务;若所述定时器扫描任务检测到所述第一任务中最早到时的定时器到时,向所述第一任务发送定时器到时通知;所述第一任务根据所述定时器到时通知,扫描所述第一定时器队列。2.根据权利要求1所述的定时器任务的处理方法,其特征在于,第二任务设置有线程化的第二定时器队列,所述第二任务设置定时器时,将所述定时器设置到所述第二定时器队列,并将所述第二任务中最早到时的定时器设置给定时器扫描任务;所述定时器扫描任务设置有定时器数组,所述定时器数组存储有所述第一任务的最早到时的定时器和所述第二任务的最早到时的定时器。3.根据权利要求2所述的定时器任务的处理方法,其特征在于,所述定时器扫描任务轮询检测所述定时器数组中的所有任务的最早到时的定时器。4.根据权利要求1所述的定时器任务的处理方法,其特征在于,所述第一任务还设置有用于对设置到所述第一定时器队列的定时器进行查重的查重队列,所述查重队列采用红黑树数据结构。5.根据权利要求1所述的定时器任务的处理方法,其特征在于,所述第一定时器队列采用红黑树数据结构、二叉树数据结构、多叉数数据结构、数组数据结构或者链表数据结构。6.一种软件定时器,其特征在于,包括:定时器设置模块,用于将第一任务设置的定时器设置到所述第一任务的线程化的第一定时器队列,并将所述第一任务中最早到时的定时器设置给定时器扫描任务;定时器扫描模块,用于检测所述第一任务中最早到时的定时器是否到时,并在所述第一任务中最早到时的定时器到时的情况下向所述第一任务发送定时器到时通知;以及用于在所述第一任务接收到所述定时器到时通知的情况下,扫描所述第一定时器队列。7.根据权利要求6所述的软件定时器,其特征在于,所述定时器设置模块还用于将第二任务设置的定时器设置到所述第二任务的线程化的第二定时器队列,并将所述第二任务中最早到时的定时器设置给定时器扫描任务;所述定时器扫描任务设置有定时器数组,所述定时器数组存储有所述第一任务的最早到时的定时器和所述第二任务的最早到时的定时器。8.根据权利要求7所述的软件定时器,其特征在于,所述定时器扫描模块轮询检测所述定时器数组中的存储的所有任务的最早到时的定时器。9.一种运行控制装置,其特征在于,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如权利要求1至5任一项所述的定时器任务的处理方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至5任一项所述的定时器任务的处理方法。

技术总结


本发明公开了一种定时器任务的处理方法、软件定时器及存储介质,第一任务设置有线程化的第一定时器队列,第一任务设置定时器时,将定时器设置到第一定时器队列,并将第一任务中最早到时的定时器设置给定时器扫描任务;若定时器扫描任务检测到第一任务中最早到时的定时器到时,向第一任务发送定时器到时通知;第一任务根据定时器到时通知,扫描第一定时器队列。主要的定时器扫描工作分摊到不同的任务完成,避免在大规模使用定时器情况下,扫描工作集中到一个任务引起瓶颈,通过采用线程化的思想来避免软件定时器锁冲突的问题,从而提高系统吞吐率,适用于多核多线程并发环境中,系统大量使用软件定时器的场景。大量使用软件定时器的场景。大量使用软件定时器的场景。


技术研发人员:

麦伟鹏

受保护的技术使用者:

中兴通讯股份有限公司

技术研发日:

2021.06.25

技术公布日:

2022/12/26

本文发布于:2024-09-21 20:26:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/48874.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:定时器   所述   队列   数据结构
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议