[发明专利]一种多线程环境下定时器的设置方法无效
申请号: | 201110282740.5 | 申请日: | 2011-09-20 |
公开(公告)号: | CN103019805A | 公开(公告)日: | 2013-04-03 |
发明(设计)人: | 田之进;梁平;宁学军 | 申请(专利权)人: | 佳都新太科技股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 510665 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多线程 环境 定时器 设置 方法 | ||
技术领域
本发明涉及计算机软件领域,特别是涉及一种基于多线程操作系统环境下的定时器的设置方法。
背景技术
在软件开发中经常需要用到定时器,特别是在通信系统的设计中,有大量的定时要求。程序可能定时执行一些任务,或者在通信的过程中,收发双方都需要用到定时器:发送方发送消息以后有时候需要对方在约定的时间内收到对方的回应,如果在规定的时间内收不到回应,需要进行适当的处理,或者重发消息,或者进入出错处理。在许多基于网络通信的协议中,都有许多与定时器相关的规约,要实现这些协议,定时器的实现是最基本的要求之一。因此,定时器在现代程序设计中起着至关重要的作用。
定时器的设置方法,根据实现的复杂度、系统的规模、系统运行的效率要求等,目前有很多种实现方法。其中一种使用比较普遍的方法是增量定时器。
在增量定时器的实现中,设计了一种存放定时器信息的数据结构,我们把这个结构叫做定时器控制块(Timer Control Block,简称TCB),TCB记录了单个定时器实例的唯一标识(timer ID)、定时器的超时时长、定时器触发时的操作。定时器超时触发时的操作机制一般有两种实现方法:一种是系统触发执行某个预先定义的方法,一种是系统发送某个预先定义的代表超时的消息给定时器的设置者。前者在TCB中定义一个函数的入口,后者在TCB中记录定时器的设置者以及代表超时的消息的信息。前一种方法的好处是程序相对简单,但触发函数的执行有时候会影响定时器的精度,同时在多线程环境下可能存在资源竞争的问题;后一种方法的好处是超时处理简单,对定时器的精度影响较小,缺点是需要在定时器中实现消息发送的机制,需要记录定时器的设置者。在目前流行的多线程环境下,消息机制更容易发挥多线程的优势,因而获得越来越多的使用。
对一个通用的定时器管理方法来说,以下操作是必须提供的:
1)设置定时器,setTimer(timer ID,interval)。设置一个定时器实例,其中timer ID为定时器的唯一标识,interval为定时器的指定时长;
2)清除定时器,clearTimer(timerID)。在定时器超时前,根据已知的timerID查找到定时器实例,并将其删除;
3)超时检查和处理。将定时器的时长划分为若干个时间相等的时间片,在每个时间片内检查所管理的定时器实例是否有超时,如果有,则触发超时处理。
增量定时器的实现原理是,通过一个双向链表管理一个定时器控制块(TCB)的集合,对定时器的管理也就是对这些TCB的操作。增量定时器在每个TCB中记录的时间间隔是当前TCB相对于它前面一个将要超时的TCB的时间的差值。在多线程的环境下,一般设置一个独立的线程,这个线程执行一个死循环:先定时等待一个时间片(timerTick)(一般用sleep()类的系统调用),接下来将双向链表头指针的第一个TCB的interval减去timerTick,然后检查interval是否大于0。如果不大于0则说明这个定时器超时,执行相应的超时处理,并将这个TCB从链表中删除。因为可能有多个定时器同时超时,因此第一个超时的定时器处理完以后,还需要继续从双向链表头部检查其他TCB是否也超时了,直到遇到第一个没有超时的TCB或者遍历到链表结尾为止。
定时器设置方法的性能指标一般从空间和时间两个维度进行衡量。空间复杂度指的是算法用于存储定时器集合的数据结构的存储空间的度量;时间复杂度是指该算法管理特定数量的定时器的最大执行时间的度量。
当系统中所需要的定时器数量非常庞大时,系统的时间开销将随之增大。假设TCB的个数为n,增量定时器的setTimer操作为O(n),clearTimer操作为O(n),超时检查和处理为O(1)。由于clearTimer操作是根据timerID来查找的,所以通过t imerID对TCB进行索引可以提高clearTimer操作的时间性能到O(logen)的水平,而setTimer不变。这样,当定时器的设置和清除操作非常频繁的时候,定时器的性能可能成为系统运行的瓶颈。
综上所述,基于timerID索引的增量定时器的设置方法虽然原理简单,结构清晰,对系统的空间开销不大,但由于setTimer操作的开销是O(n),当TCB的个数很大的时候,对系统的时间性能的影响是非常大的,有必要加以解决。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于佳都新太科技股份有限公司,未经佳都新太科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110282740.5/2.html,转载请声明来源钻瓜专利网。