[发明专利]一种软件定时器的优化方法及系统在审
| 申请号: | 201410309635.X | 申请日: | 2014-07-01 |
| 公开(公告)号: | CN104035786A | 公开(公告)日: | 2014-09-10 |
| 发明(设计)人: | 李梅勇;原曦佳;邓惩 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
| 主分类号: | G06F9/44 | 分类号: | G06F9/44 |
| 代理公司: | 上海光华专利事务所 31219 | 代理人: | 余明伟 |
| 地址: | 201616 上海市松*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 软件 定时器 优化 方法 系统 | ||
技术领域
本发明计算机通信技术领域,涉及一种优化方法及系统,特别是涉及一种软件定时器的优化方法及系统。
背景技术
嵌入式多任务系统软件设计中经常会用到定时器,分为硬件定时器和软件定时器。硬件定时器通过中断方式实现,时间准确度高,但使用限制较多,如超时处理函数有阻塞,定时器较多时多中断对系统性能有影响。而传统的软件定时器通过一个软件定时器链表去管理定时器实例对象的所有操作,包括定时器实例对象的创建,启动,超时检测及处理,停止及删除。每次超时判断都会去循环遍历扫描链表中所有的定时器实例对象是否有超时,将超时的所有定时器进行相应回调处理,若果定时器实例对象应用较多,成百上千时,会占用很大的cpu资源,对定时器的管理效率低,且同一时刻超时的定时器会较多,执行这些超时定时器的回调处理耗时总合也会较多,由于这部分耗时未计算在软件定时器计时中,长期累积将会造成软件定时器时间偏移,定时不准确的问题。
由于在软件开发中经常需要用到定时器,特别是在通信系统的设计中,有大量的定时要求。如在机架式EPON系统设计中,统计模块需要针对每个监控点启动定时器去定时采集数据,监控点可能上百个。在组播等协议模块中,收发包都需要用到定时器:发送消息以后有时候需要对方在约定的时间内收到对方的回应,如果在规定的时间内收不到回应,需要进行适当的处理,或者重发消息,或者进入出错处理。这些都对定时时间都较高要求。
对于通用的定时器管理方法来说,以下操作都是必须的:
1)创建定时器,creatTimer(interval,*app_callback)。设置一个定时器实例,其中interval表示定时器的指定时长,*app_callback表示定时器超时的回调处理函数。函数返回一个可用的定时器标识ID(timer ID);
2)启动定时器,startTimer(timer ID)。启动一个定时器实例,其中timerID为定时器的唯一标识;
3)停止定时器,stopTimer(timer ID)。停止一个定时器实例,其中timerID为定时器的唯一标识;
4)删除定时器,destroyTimer(timerID)。在定时器超时前,根据已知的timerID查找到定时器实例对象,并将其删除;
5)超时检查和处理。将定时器的时长划分为若干个时间相等的时间片,在每个时间片内检查所管理的定时器实例是否有超时,如果有,则触发超时处理。检测定时器的超时,并进行超时回调处理。
现有技术采用一个链表timerList来管理定时器实例对象的所有操作。给定超时时间t1,t2,t3及相应的超时回调处理函数,创建定时器实例索引timer1,timer2,timer3,请参阅图1,显示为现有技术中定时器实例索引存储示意图。设置相应的剩余超时时间(timeout_interval)为t1,t2,t3。启动定时器时将定时器实例对象timer1,timer2,timer3按启动顺序添加到定时器管理链表timerList中。停止定时器实例对象及删除定时器实例对象时从定时器管理链表timerList开头扫描找到要处理的定时器实例对象进行相应处理。
现有定时器实例对象的超时检测和处理过程如下:
初始化创建一个定时器处理任务,该任务执行一个死循环:先定时等待一个时间片(timerTick)(一般用类taskDelay的系统调用),接下来将timerList链表头指针的第一个定时器实例索引timer1的剩余时间timeout_interval减去时间片timerTick,然后判断timeout_interval是否大于0。如果不大于0则说明这个定时器超时,执行相应的超时回调处理函数,并将这个定时器实例索引从链表中删除。因为可能有多个定时器同时超时,因此第一个定时器实例索引处理完以后,还需要继续扫描该定时器实例索引的下一个定时器实例索引,执行同样的操作,直到遍历到链表结尾为止。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410309635.X/2.html,转载请声明来源钻瓜专利网。





