[发明专利]定时器的处理方法及装置有效
申请号: | 201110362316.1 | 申请日: | 2011-11-15 |
公开(公告)号: | CN103106222B | 公开(公告)日: | 2017-03-08 |
发明(设计)人: | 王冠 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京康信知识产权代理有限责任公司11240 | 代理人: | 吴贵明,江舟 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 定时器 处理 方法 装置 | ||
技术领域
本申请涉及数据处理领域,具体而言,涉及一种定时器的处理方法及装置。
背景技术
随着互联网技术的发展,海量元素定时器得到越来越多的应用。这里,首先描述一下关于海量元素定时器的几个基本概念:1)定时器是指在指定的时间点或者指定的时间范围内触发预先设定好的事件的硬件或者软件的具体实现;定时器事件是指,需要在某个时间点或者时间范围内,做某件事情的一个数据结构实体;海量元素是指大量的需要触发的事件,例如百万以上的级别;海量元素定时器是指,在指定的时间点或者指定的时间范围内触发预先设定好的海量元素的硬件或者软件的具体实现。
在现有技术中,从操作系统底层到应用层,有很多种方法实现海量元素定时器。但是,这些方法只适合于数据量不大,时间范围比较连续的情况,对于海量元素且时间分布离散的定时器,现有技术中缺少比较好的实现方法。例如,在现有技术中存在无序链表、有序链表和时间轮等几种方案,以下分别介绍。
1)无序链表方案:按照创建顺序,把事件元素用链表连接起来,不停遍历链表,查找到达发生时间点的事件元素并处理。在该种实现方式中,由于在链表中事件是无序排列,所以要判断哪些事件到了触发点,必须要遍历所有元素,假设当前有500万个事件元素在链表中,从定时器事件的触发时间到达至执行该定时器事件的时间要求不超过1秒(即,定时器事件精确度要求为1秒),那么遍历将会导致CPU处理负荷飙升,大幅增加系统负载。
2)有序链表方案:按照事件的发生时间顺序,把事件元素用一个有序的链表连接起来,查找到达发生时间点的事件元素并处理。该方案是对无序链表实现的改进。然而,该种实现方式虽然对链表做到了有序排列,降低了查找开销,但是对于插入元素却带来了额外的开销,因为每次插入需要先查找在有序链表中的插入点,随着元素的增多这个开销会增大,影响处理效率。
3)时间轮方案:把时间按照一定的间隔划分,并预先为每个时间段划分好存储空间,把事件元素按照发生时间分别存储到对应时间段的存储空间,当到达某个时间轮范围时,取出这一个轮所包含的所有事件元素。该时间轮的实现方式对于时间范围分布比较均匀的事件元素比较合适,但对于时间分布很离散的事件元素则不适合,因为时间轮的实现,需要分配连续的空间,而如果是离散的时间分布,则此种方式会大量浪费内存资源。
因此,针对相关技术中定时器的处理方式系统开销比较大的问题,目前尚未提出有效的解决方案。
发明内容
针对现有技术中定时器的处理方式系统开销比较大的问题,本申请的主要目的在于提供一种定时器的处理方法及装置,以解决上述问题。
为了实现上述目的,根据本申请的一个方面,提供一种定时器的处理方法,其包括:将定时器事件的触发时间划分成多个时间段,其中,每一个所述时间段对应于一个哈希值;将触发时间在同一个时间段上的定时器事件插入到同一个链表中;以及将各个所述链表中的定时器事件映射到哈希表中,其中,每一个定时器事件在哈希表中对应地存储有一个哈希值以及该定时器事件所在的链表的标识。
优选地,所述将各个所述链表中的定时器事件映射到哈希表中之后,所述定时器的处理方法还包括:获取当前时间段所对应的当前哈希值;在所述哈希表中查找与所述当前哈希值对应的链表的标识;执行查找到的链表的标识指示的链表中的定时器事件。
优选地,所述执行查找到的链表的标识指示的链表中的定时器事件的步骤包括:创建任务队列;将查找到的链表中的定时器事件加入所述任务队列中;执行所述任务队列中的定时器事件。
优选地,所述将查找到的链表中的定时器事件加入所述任务队列中的步骤包括:创建调度线程;所述调度线程判断是否存在所述查找到的链表中的定时器事件;在判断出存在所述查找到的链表中的定时器事件时,所述唤醒的调度线程将查找到的链表中的定时器事件加入所述任务队列中。
优选地,所述执行任务队列中的定时器事件的步骤包括:任务线程执行任务队列中的定时器事件。
优选地,所述将触发时间在同一个时间段上的定时器事件插入到同一个链表中的步骤具体包括:判断待处理的定时器事件的触发时间所处的时间段;获取所述触发时间所处的时间段对应的哈希值;查找与所获取到的哈希值对应的链表;将所述待处理的定时器事件插入到所查找到的链表中。
优选地,所述查找与所获取到的哈希值对应的链表的步骤包括:在查找不到与所获取到的哈希值对应的链表时,创建与所获取到的哈希值对应的链表,并将所创建的链表作为所述查找到的链表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110362316.1/2.html,转载请声明来源钻瓜专利网。