一种定时器操作方法及装置与流程

文档序号:20161914发布日期:2020-03-24 21:06阅读:252来源:国知局
一种定时器操作方法及装置与流程

本申请涉及计算机领域,尤其涉及一种定时器操作方法及装置。



背景技术:

目前,通常在操作系统中,需要创建大量的任务定时器,构建定时器集合,每个任务定时器均用来控制在未来某个时间点调度执行某一函数,以触发目标任务的执行,在此过程中,需要基于已构建的定时器集合,对任务定时器进行各项管理操作,主要包括:对已创建的任务定时器进行查询操作,以查询出超时定时器,触发执行该超时定时器对应的超时任务,并将该超时定时器删除,以及将针对新增任务创建的任务定时器插入定时器集合中,因此,需要提供一种对操作系统中创建的任务定时器进行操作的方法。

当前,相关技术中定时器集合的构建过程,主要是,采用最小堆的方式构建定时器集合,其中,基于具有最小堆的数据结构的定时器集合,对任务定时器进行操作的过程中,具体的,在对任务定时器进行删除操作或插入操作后,均需要重新对剩余的任务定时器进行排序,随着操作系统中创建的任务定时器的数量不断增加,任务定时器的排序难度越来越大,不适用于定时器数量比较多的高性能应用场景。

由此可知,基于现有的定时器集合架构,对任务定时器进行各项管理操作的过程中,存在定时器操作耗时时间长、定时器管理难度大的问题,导致操作系统的稳定性差和可靠性低。



技术实现要素:

本申请实施例的目的是提供一种定时器操作方法及装置,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性。

为解决上述技术问题,本申请实施例是这样实现的:

本申请实施例提供了一种定时器操作方法,包括:

提供定时器集合,其中,所述定时器集合包括:对应于不同触发时长的多个定时器链表,所述定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;

基于所述定时器集合,对任务定时器进行操作。

本申请实施例提供了一种定时器操作装置,包括:

定时器集合提供模块,用于提供定时器集合,其中,所述定时器集合包括:对应于不同触发时长的多个定时器链表,所述定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;

任务定时器操作模块,用于基于所述定时器集合,对任务定时器进行操作。

本申请实施例提供了一种定时器操作设备,包括:处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

提供定时器集合,其中,所述定时器集合包括:对应于不同触发时长的多个定时器链表,所述定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;

基于所述定时器集合,对任务定时器进行操作。

本申请实施例提供了一种存储介质,用于存储计算机可执行指令,所述可执行指令在被执行时实现以下流程:

提供定时器集合,其中,所述定时器集合包括:对应于不同触发时长的多个定时器链表,所述定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;

基于所述定时器集合,对任务定时器进行操作。

本申请实施例中的定时器操作方法及装置,提供定时器集合,其中,该定时器集合包括:对应于不同触发时长的多个定时器链表,每个定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;基于上述定时器集合,对任务定时器进行操作。本申请实施例中,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的定时器操作方法的第一种流程示意图;

图2为本申请实施例提供的定时器操作方法中定时器集合的第一种数据结构示意图;

图3为本申请实施例提供的定时器操作方法中定时器集合的第二种数据结构示意图;

图4为本申请实施例提供的定时器操作方法的第二种流程示意图;

图5为本申请实施例提供的定时器操作装置的模块组成示意图;

图6为本申请实施例提供的定时器操作设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

本申请实施例提供了一种定时器操作方法及装置,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性。

图1为本申请实施例提供的定时器操作方法的第一种流程示意图,如图1所示,该方法至少包括以下步骤:

s101,提供定时器集合,其中,该定时器集合包括:对应于不同触发时长的多个定时器链表,每个定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器,并且该定时器集合是预先在操作系统中构建的;

其中,上述定时器集合可以是有序定时器集合,该有序定时器集合中链表头部的任务定时器的排序规则可以根据实际情况进行设定的,例如,将任务定时器的触发时长大小作为排序规则,又如,将任务定时器的超时绝对时间戳大小作为排序规则,再如,将任务定时器的创建绝对时间早晚等等,这样识别出定时器链表的头部定时器后能够提高任务定时器的查询效率。

具体的,如图2所示,该定时器集合包括:对应于触发时长分别为t1、t2、…tm的多个定时器链表,每个定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器,即将具有相同预设触发时长的任务定时器放置于同一定时器链表中,例如,对应于触发时长为t1的定时器链表中包含的n个定时器的触发时长均为t1,其中,t1可以为10ms,t2可以为20ms;

其中,上述触发时长可以是超时时间间隔,具有超时时间间隔的任务定时器用于对定时任务执行时长进行计时,即确定在超时时间间隔内所需执行的定时任务是否执行完成;或者,任务定时器用于确定目标任务是否开始执行,即当确定任务定时器为超时定时器时,触发执行在超时时间间隔后所需执行的超时任务;

s102,基于提供的定时器集合,对任务定时器进行操作,其中,该操作可以是增删改查操作,即对任务定时器的插入操作、删除操作、重设操作、或查询操作;

具体的,当针对新增目标任务创建任务定时器时,需要将新创建的任务定时器添加至定时器集合中;或者,当某一任务定时器对应的目标任务执行完成后,需要将该任务定时器从定时器集合中删除;或者,针对预设的复用定时器,当该复用定时器对应的目标任务执行完成后,需要更新该复用定时器的绝对时间戳,并将该复用定时器从定时器集合中的第一位置移至第二位置;或者,针对满足超时条件的任务定时器,需要在定时器集合中查找出当前绝对时间戳大于或等于超时绝对时间戳的任务定时器其中,每个任务定时器对应一个触发时长、创建绝对时间戳和超时绝对时间戳,该超时绝对时间戳等于触发时长与创建绝对时间戳之和,该创建绝对时间戳是指创建任务定时器时的当前绝对时间。

本申请实施例中,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性。

其中,为了进一步提高任务定时器的查询效率,如图3所示,上述定时器集合还包括:链表头部子集;

上述链表头部子集与各定时器链表的头部相关联并用于存放各定时器链表的头部的任务定时器,在图3中,分别将触发时长为t1、t2、…tm的多个定时器链表中的定时器1添加至链表头部子集中。

具体的,通过对定时器集合中各定时器链表的头部的数据结构进行优化改进,将各定时器链表的头部的任务定时器添加至链表头部子集中,即将各定时器链表的首端定时器添加至链表头部子集中,基于此,上述定时器集合是通过如下方式构建的:

在操作系统中创建包含多个定时器链表的初始定时器集合,其中,该初始定时器集合的数据结构参见图2;

在上述初始任务定时器集合中,创建包含多个元素节点的链表头部子集;

针对每个定时器链表的首端定时器,将该首端定时器确定为创建的链表头部子集中的元素节点,得到目标定时器集合。

其中,针对任务定时器的插入操作,每次均将新增的任务定时器添加至对应的定时器链表的尾部,这样使得定时器链表内的多个任务定时器的超时绝对时间戳依次递增,其中,该超时绝对时间戳为任务定时器的创建绝对时间戳与触发时长之和,进而使得每个定时器链表中的各任务定时器按照超时绝对时间戳由早到晚的顺序自然有序排列,针对每个定时器链表,该定时器链表中排序越靠前的任务定时器的超时绝对时间越早,也就是说,每个定时器链表中的首端定时器最先满足超时条件,同时,将各定时器链表的首端定时器设置于一链表头部子集中,因此,针对任务定时器的查询操作,直接遍历链表头部子集中的各任务定时器,以对该任务定时器进行超时与否的判断即可,这样能够进一步提高任务定时器的查询效率。

其中,上述链表头部子集中的任务定时器是随着各定时器链表的首端定时器的更新而变化的,例如,当某一定时器链表的首端定时器因满足超时条件而被删除或重设后,此时该定时器链表中原位于第二位的任务定时器更新为首端定时器,即将更新后的首端定时器添加至链表头部子集中。

在图3中,以对应于触发时长为t1的定时器链表为例,当该定时器链表的首端定时器即定时器1因满足超时条件而被删除或重设后,此时该定时器链表中原位于第二位的任务定时器即定时器2更新为首端定时器,即将更新后的首端定时器即定时器2添加至链表头部子集中。

具体的,上述链表头部子集采用数组的数据结构实现,或者,上述链表头部子集采用红黑树的数据结构实现。

其中,考虑到红黑树具有很好的自动排序能力,其中,红黑树的排序规则可以根据实际情况进行设定的,例如,将任务定时器的触发时长作为排序规则,又如,将任务定时器的超时绝对时间戳作为排序规则,这样可以充分借助红黑树的自动排序能力对各定时器链表的首端定时器进行自动排序,从而更进一步提高任务定时器的查询效率,尤其,针对定时器集合中包含的定时器链表的数量比较多的情况下,上述链表头部子集采用红黑树的数据结构实现能够更加充分发挥其自动排序的作用;

对应的,针对定时器集合中包含的定时器链表的数量大于预设阈值的情况,上述链表头部子集采用数组的数据结构实现。

进一步的,为了使得定时器集合具有更好的普适性和拓展性,在同一操作进程中完成对任务定时器的所有操作,这样还能够降低系统内存的消耗,进一步提高操作系统的运行稳定性,同时,能够加速对链表头部子集的遍历效率,基于此,如图4所示,上述s102基于提供的定时器集合,对任务定时器进行操作,具体包括:

s1021,提供一定时器操作线程,具体的,在操作系统中创建一执行程序,并声明该执行程序用于执行对任务定时器的所有操作;

s1022,采用上述定时器操作线程基于提供的定时器集合,对任务定时器进行操作。

其中,针对对任务定时器的操作包括对任务定时器的插入操作的情况;

对应的,上述s1022采用上述定时器操作线程基于提供的定时器集合,对任务定时器进行操作,具体包括:

采用上述定时器操作线程在提供的定时器集合中,查找与待插入的任务定时器的触发时长对应的目标定时器链表;以及,

若查找到目标定时器链表,则将待插入的任务定时器添加到该目标定时器链表的尾部。

例如,在图3中,若待插入的任务定时器的触发时长为t1,则将该任务定时器添加至对应于触发时长为t1的定时器链表的尾部,即在第一行的定时器链表的定时器n的后面增加一定时器n+1。

具体的,考虑到在定时器集合中不存在与待插入的任务定时器的触发时长对应的定时器链表的情况,此时,需要新建一个定时器链表,基于此,在查找与待插入的任务定时器的触发时长对应的目标定时器链表之后,还包括:

若未查找到目标定时器链表,则在提供的定时器集合中,新增与待插入的任务定时器的触发时长对应的定时器链表;以及,

将待插入的任务定时器作为新增的定时器链表的头部的任务定时器,即新建的定时器链表只包含该待插入的任务定时器,该任务定时器既是该定时器链表的首端定时器,又是该定时器链表的尾端定时器。

其中,针对定时器集合还包括链表头部子集的情况,还需将该待插入的任务定时器添加至链表头部子集中;

例如,在图3中,若待插入的任务定时器的触发时长为tm+1,则在定时器集合中增加一行对应于触发时长为tm+1的定时器链表,并将该触发时长为tm+1的任务定时器添加至该定时器链表中。

具体的,可以在定时器集合中预留多个定时器链表空位,当待插入的任务定时器的触发时长均不同于定时器集合中已有任务定时器的触发时长的时,选取一个定时器链表空位创建定时器链表,从而使得定时器集合能够支持任意触发时长的定时器,且不需要额外任何内存开销,提供任务定时器的触发时长设置的灵活性。

在本申请提供的实施例中,由于每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,同时,由于每次均将新增的任务定时器添加至对应的定时器链表的尾部,这样使得定时器链表内的多个任务定时器的超时绝对时间戳依次递增,进而使得每个定时器链表中的各任务定时器按照超时绝对时间戳由早到晚的顺序自然有序排列,无需额外的对任务定时器进行排序,因此,可以保证任务定时器的插入操作只需要挪动对应的定时器链表相关的定时器前后指针,从而达到了o(1)的定时器插入操作效率。

其中,针对对任务定时器的操作包括对任务定时器的查询操作的情况;

对应的,上述s1022采用上述定时器操作线程基于提供的定时器集合,对任务定时器进行操作,具体包括:

采用上述定时器操作线程依次遍历链表头部子集中的各任务定时器;以及,

当遍历到符合超时条件的任务定时器时,触发执行该任务定时器所对应的任务。

具体的,针对链表头部子集采用红黑树的数据结构实现的情况,按照红黑树排序后的定时器顺序依次遍历红黑树中各任务定时器,例如,在图3中,链表头部子集采用红黑树的数据结构实现,且按照红黑树排序后的定时器顺序分别为触发时长为t2的定时器1、触发时长为t5的定时器1、触发时长为t1的定时器1等等,此时,采用上述定时器操作线程先遍历触发时长为t2的定时器1、再遍历触发时长为t5的定时器1、再遍历触发时长为t1的定时器1等等,直到遍历完成红黑树上各节点对应的任务定时器;

针对每个当前遍历的任务定时器,判断该任务定时器的超时绝对时间戳是否小于当前绝对时间戳,若是,则确定该任务定时器满足超时条件,并执行该任务定时器对应的回调函数;

具体的,考虑到触发执行完成符合超时条件的任务定时器对应的任务后,若该任务定时器为非复用定时器,则需要将该任务定时器删除,若该任务定时器为复用定时器时,则将该任务定时器重设,基于此,在触发执行该任务定时器所对应的任务之后,还包括:

对符合超时条件的任务定时器进行删除操作,或者对符合超时条件的任务定时器进行重设操作。

在本申请提供的实施例中,通过将各定时器链表的首端定时器添加至链表头部子集中,并且每个定时器链表的首端定时器均为超时绝对时间戳最早的任务定时器,同时,采用一定时器操作线程依次遍历链表头部子集中的各任务定时器,这样能够加速对链表头部子集的遍历效率,进一步提高任务定时器的查询效率,对任务定时器是否到期进行快速检查,以便快速查询出符合预设超时条件的任务定时器,进而及时处理到期的目标任务,从而进一步提高操作系统的稳定性和可靠性。

其中,针对对任务定时器的操作包括对任务定时器的删除操作的情况;

对应的,上述s1022采用上述定时器操作线程基于提供的定时器集合,对任务定时器进行操作,具体包括:

采用上述定时器操作线程在提供的定时器集合中,根据待删除的任务定时器的位置信息,删除该待删除的任务定时器。

具体的,例如,针对任务定时器对应的目标任务为发送预定请求的情况,若在触发时长内该预定请求发送完成,则将该任务定时器确定为待删除的任务定时器;而若在触发时长内该预定请求未发送,则也将该任务定时器确定为待删除的任务定时器,并标记为超时定时器;

又如,针对任务定时器对应的目标任务为某一触发时长后所需执行的预设任务,则在该触发时长后执行该预设任务,并将该任务定时器确定为待删除的任务定时器。

具体的,上述位置信息可以包括:用于表征前后指针的指示信息;

对应的,上述采用上述定时器操作线程在提供的定时器集合中,根据待删除的任务定时器的位置信息,删除该待删除的任务定时器,具体包括:

采用上述定时器操作线程在提供的定时器集合中摘除位置信息所指示的前后指针,以删除待删除的任务定时器。

其中,基于待删除的任务定时器的位置信息中的前后指针,能够在定时器集合中查找到该待删除的任务定时器,即可知该待删除的任务定时器在定时器集合中的所在行和所在列,此时只需要修改该待删除的任务定时器的前后指针,从而直接从定时器链表中删除即可,这样简化了任务定时器的删除操作,因此,可以保证任务定时器的删除操作只需要挪动对应的定时器链表相关的定时器前后指针,从而达到了o(1)的定时器删除操作效率。

其中,针对对任务定时器的操作包括对任务定时器的重设操作的情况;

对应的,上述s1022采用上述定时器操作线程基于提供的定时器集合,对任务定时器进行操作,具体包括:

采用上述定时器操作线程在提供的定时器集合中,确定包含待重置的任务定时器的目标定时器链表;以及,

更新待重置的任务定时器的绝对时间戳,并将更新后的任务定时器添加到目标定时器链表的尾部。

具体的,当待删除的任务定时器为预定的复用定时器时,则需要根据当前绝对时间戳更新该任务定时器的超时绝对时间戳,并将该任务定时器移至其所在的定时器链表的尾部,这样简化了任务定时器的重置操作,并且保证了该定时器链表中的各任务定时器按照超时绝对时间戳由早到晚的顺序自然有序排列。

基于上述对定时器的增删改查操作的具体过程,可知,针对任一任务定时器的增删改查操作均能够在一个预设时间内处理完成,以使对任务定时器的操作效率与任务定时器的数量无直接影响关系,进而能够实现定时器的操作与定时器的数量解耦合,实现对定时器集合中的任务定时器的所有操作效率上达到o(1)的性能。

其中,由于基于上述定时器集合的数据结构,实现任务定时器的操作与定时器的数量解耦合,因此,可以将上述定时器操作方法应用于高性能的业务场景中,例如,应用于连接请求数量比较多的高性能网络(如,rdma)或高性能存储产品,对应的,上述任务定时器对应的目标任务为针对远程直接数据存取rdma的任务。

本申请实施例中的定时器操作方法,提供定时器集合,其中,该定时器集合包括:对应于不同触发时长的多个定时器链表,每个定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;基于上述定时器集合,对任务定时器进行操作。本申请实施例中,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性。

对应上述图1至图4描述的定时器操作方法,基于相同的技术构思,本申请实施例还提供了一种定时器操作装置,图5为本申请实施例提供的定时器操作装置的模块组成示意图,该装置用于执行图1至图4描述的定时器操作方法,如图5所示,该装置包括:

定时器集合提供模块501,用于提供定时器集合,其中,所述定时器集合包括:对应于不同触发时长的多个定时器链表,所述定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;

任务定时器操作模块502,用于基于所述定时器集合,对任务定时器进行操作。

本申请实施例中,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性

可选地,所述定时器集合还包括:链表头部子集;

所述链表头部子集与各所述定时器链表的头部相关联并用于存放各所述定时器链表的头部的任务定时器。

可选地,所述链表头部子集采用数组的数据结构实现,或者,所述链表头部子集采用红黑树的数据结构实现。

可选地,所述任务定时器操作模块502,具体用于:

提供一定时器操作线程;

采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作。

可选地,所述操作包括:查询操作;

所述任务定时器操作模块502,进一步具体用于:

采用所述定时器操作线程依次遍历所述链表头部子集中的各所述任务定时器;以及,

当遍历到符合超时条件的任务定时器时,触发执行该任务定时器所对应的任务。

可选地,所述任务定时器操作模块502,还进一步具体用于:

在触发执行该任务定时器所对应的任务之后,对所述任务定时器进行删除操作,或者对所述任务定时器进行重设操作。

可选地,所述操作还包括:插入操作;

所述任务定时器操作模块502,进一步具体用于:

采用所述定时器操作线程在所述定时器集合中,查找与待插入的任务定时器的触发时长对应的目标定时器链表;以及,

若查找到所述目标定时器链表,则将所述待插入的任务定时器添加到所述目标定时器链表的尾部。

可选地,所述任务定时器操作模块502,还进一步具体用于:

若未查找到所述目标定时器链表,则在所述定时器集合中,新增与所述待插入的任务定时器的所述触发时长对应的定时器链表;以及,

将所述待插入的任务定时器作为新增的所述定时器链表的头部的任务定时器。

可选地,所述操作还包括:删除操作;

所述任务定时器操作模块502,进一步具体用于:

采用所述定时器操作线程在所述定时器集合中,根据待删除的任务定时器的位置信息,删除所述待删除的任务定时器。

可选地,所述位置信息包括:用于表征前后指针的指示信息;

所述任务定时器操作模块502,更进一步具体用于:

采用所述定时器操作线程在所述定时器集合中摘除所述前后指针,以删除所述待删除的任务定时器。

可选地,所述操作还包括:重设操作;

所述任务定时器操作模块502,进一步具体用于:

采用所述定时器操作线程在所述定时器集合中,确定包含待重置的任务定时器的目标定时器链表;以及,

更新所述待重置的任务定时器的绝对时间戳,并将更新后的所述任务定时器添加到所述目标定时器链表的尾部。

本申请实施例中的定时器操作装置,提供定时器集合,其中,该定时器集合包括:对应于不同触发时长的多个定时器链表,每个定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;基于上述定时器集合,对任务定时器进行操作。本申请实施例中,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性。

需要说明的是,本申请提供的定时器操作装置的实施例与本申请提供的定时器操作方法的实施例基于同一发明构思,因此该实施例的具体实施可以参见前述定时器操作方法的实施,重复之处不再赘述。

进一步地,对应上述图1至图4所示的方法,基于相同的技术构思,本申请实施例还提供了一种定时器操作设备,该设备用于执行上述的定时器操作方法,如图6所示。

定时器操作设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器601和存储器602,存储器602中可以存储有一个或一个以上存储应用程序或数据。其中,存储器602可以是短暂存储或持久存储。存储在存储器602的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对定时器操作设备中的一系列计算机可执行指令。更进一步地,处理器601可以设置为与存储器602通信,在定时器操作设备上执行存储器602中的一系列计算机可执行指令。定时器操作设备还可以包括一个或一个以上电源603,一个或一个以上有线或无线网络接口604,一个或一个以上输入输出接口605,一个或一个以上键盘606等。

在一个具体的实施例中,定时器操作设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对定时器操作设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:

提供定时器集合,其中,所述定时器集合包括:对应于不同触发时长的多个定时器链表,所述定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;

基于所述定时器集合,对任务定时器进行操作。

可选地,计算机可执行指令在被执行时,所述定时器集合还包括:链表头部子集;

所述链表头部子集与各所述定时器链表的头部相关联并用于存放各所述定时器链表的头部的任务定时器。

可选地,计算机可执行指令在被执行时,所述链表头部子集采用数组的数据结构实现,或者,所述链表头部子集采用红黑树的数据结构实现。

可选地,计算机可执行指令在被执行时,所述基于所述定时器集合,对任务定时器进行操作,包括:

提供一定时器操作线程;

采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作。

可选地,计算机可执行指令在被执行时,所述操作包括:查询操作;

所述采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作,包括:

采用所述定时器操作线程依次遍历所述链表头部子集中的各所述任务定时器;以及,

当遍历到符合超时条件的任务定时器时,触发执行该任务定时器所对应的任务。

可选地,计算机可执行指令在被执行时,在触发执行该任务定时器所对应的任务之后,还包括:

对所述任务定时器进行删除操作,或者对所述任务定时器进行重设操作。

可选地,计算机可执行指令在被执行时,所述操作还包括:插入操作;

所述采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作,包括:

采用所述定时器操作线程在所述定时器集合中,查找与待插入的任务定时器的触发时长对应的目标定时器链表;以及,

若查找到所述目标定时器链表,则将所述待插入的任务定时器添加到所述目标定时器链表的尾部。

可选地,计算机可执行指令在被执行时,在查找与待插入的任务定时器的触发时长对应的目标定时器链表之后,还包括:

若未查找到所述目标定时器链表,则在所述定时器集合中,新增与所述待插入的任务定时器的所述触发时长对应的定时器链表;以及,

将所述待插入的任务定时器作为新增的所述定时器链表的头部的任务定时器。

可选地,计算机可执行指令在被执行时,所述操作还包括:删除操作;

所述采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作,包括:

采用所述定时器操作线程在所述定时器集合中,根据待删除的任务定时器的位置信息,删除所述待删除的任务定时器。

可选地,计算机可执行指令在被执行时,所述位置信息包括:用于表征前后指针的指示信息;

所述采用所述定时器操作线程在所述定时器集合中,根据待删除的任务定时器的位置信息,删除所述待删除的任务定时器,包括:

采用所述定时器操作线程在所述定时器集合中摘除所述前后指针,以删除所述待删除的任务定时器。

可选地,计算机可执行指令在被执行时,所述操作还包括:重设操作;

所述采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作,包括:

采用所述定时器操作线程在所述定时器集合中,确定包含待重置的任务定时器的目标定时器链表;以及,

更新所述待重置的任务定时器的绝对时间戳,并将更新后的所述任务定时器添加到所述目标定时器链表的尾部。

本申请实施例中的定时器操作设备,提供定时器集合,其中,该定时器集合包括:对应于不同触发时长的多个定时器链表,每个定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;基于上述定时器集合,对任务定时器进行操作。本申请实施例中,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性。

进一步地,对应上述图1至图4所示的方法,基于相同的技术构思,本申请实施例还提供了一种存储介质,用于存储计算机可执行指令,一种具体的实施例中,该存储介质可以为u盘、光盘、硬盘等,该存储介质存储的计算机可执行指令在被处理器执行时,能实现以下流程:

提供定时器集合,其中,所述定时器集合包括:对应于不同触发时长的多个定时器链表,所述定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;

基于所述定时器集合,对任务定时器进行操作。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述定时器集合还包括:链表头部子集;

所述链表头部子集与各所述定时器链表的头部相关联并用于存放各所述定时器链表的头部的任务定时器。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述链表头部子集采用数组的数据结构实现,或者,所述链表头部子集采用红黑树的数据结构实现。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述基于所述定时器集合,对任务定时器进行操作,包括:

提供一定时器操作线程;

采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述操作包括:查询操作;

所述采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作,包括:

采用所述定时器操作线程依次遍历所述链表头部子集中的各所述任务定时器;以及,

当遍历到符合超时条件的任务定时器时,触发执行该任务定时器所对应的任务。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,在触发执行该任务定时器所对应的任务之后,还包括:

对所述任务定时器进行删除操作,或者对所述任务定时器进行重设操作。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述操作还包括:插入操作;

所述采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作,包括:

采用所述定时器操作线程在所述定时器集合中,查找与待插入的任务定时器的触发时长对应的目标定时器链表;以及,

若查找到所述目标定时器链表,则将所述待插入的任务定时器添加到所述目标定时器链表的尾部。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,在查找与待插入的任务定时器的触发时长对应的目标定时器链表之后,还包括:

若未查找到所述目标定时器链表,则在所述定时器集合中,新增与所述待插入的任务定时器的所述触发时长对应的定时器链表;以及,

将所述待插入的任务定时器作为新增的所述定时器链表的头部的任务定时器。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述操作还包括:删除操作;

所述采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作,包括:

采用所述定时器操作线程在所述定时器集合中,根据待删除的任务定时器的位置信息,删除所述待删除的任务定时器。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述位置信息包括:用于表征前后指针的指示信息;

所述采用所述定时器操作线程在所述定时器集合中,根据待删除的任务定时器的位置信息,删除所述待删除的任务定时器,包括:

采用所述定时器操作线程在所述定时器集合中摘除所述前后指针,以删除所述待删除的任务定时器。

可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述操作还包括:重设操作;

所述采用所述定时器操作线程基于所述定时器集合,对任务定时器进行操作,包括:

采用所述定时器操作线程在所述定时器集合中,确定包含待重置的任务定时器的目标定时器链表;以及,

更新所述待重置的任务定时器的绝对时间戳,并将更新后的所述任务定时器添加到所述目标定时器链表的尾部。

本申请实施例中的存储介质存储的计算机可执行指令在被处理器执行时,提供定时器集合,其中,该定时器集合包括:对应于不同触发时长的多个定时器链表,每个定时器链表用于存放具有与该定时器链表对应的触发时长的任务定时器;基于上述定时器集合,对任务定时器进行操作。本申请实施例中,通过构建包含多个定时器链表的定时器集合,每个定时器链表用于存放具有相同预设触发时长的多个任务定时器,各定时器链表的预设触发时长各不相同,基于该定时器集合对某一任务定时器进行相应的操作,这样能够缩短对任务定时器执行操作所需耗时,进而能够提高任务定时器的管理效率,提升操作系统的稳定性和可靠性。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1