一种基于动态计时周期的进程内定时器管理方法及系统技术方案

技术编号:13171243 阅读:60 留言:0更新日期:2016-05-10 14:47
本发明专利技术公开了一种基于动态计时周期的进程内定时器管理方法及系统,采用统一的计时线程和可动态调整的计时周期,基于并发工作线程池模拟多种周期的定时器,简化了定时器管理,有效解决了软件定时器多、定时线程多、定时精度差的问题,有效提升了软件处理性能。

【技术实现步骤摘要】

本专利技术设及软件设计领域,特别设及基于动态计时周期的进程内定时器管理方法 及系统。
技术介绍
在软件设计中,定时器被频繁用于界面刷新、数据采集、超时判断等需要周期性执 行的业务,因此经常要为各种定时器创建独立的定时线程。特别是对于模块化设计的软件, 由于定时器只模块内部可见,导致大量定时线程的出现;即便是共享定时线程,由于线程执 行工作增多必然导致定时精度下降;运些都会影响软件性能。 本专利技术一种基于动态计时周期的进程内定时器管理方法及系统,采用统一的计时 线程和可动态调整的计时周期,基于并发工作线程池模拟多种周期的定时器,简化了定时 器管理,有效解决了软件定时器多、定时线程多、定时精度差的问题,有效提升了软件处理 性能。
技术实现思路
本专利技术提出一种基于动态计时周期的进程内定时器管理方法及系统,有效解决了 软件定时器多、定时线程多、定时精度差的问题,提升了软件处理性能。 具体方案如下: -种基于动态计时周期的进程内定时器管理方法,包括W下步骤: SI:创建初始化接口,参数包括计时周期t',返回初始化结果;[000引S2:创建注册定时器接口,参数包括定时器周期T、定时器回调处理函数指针化nc 和回调参数P,返回定时器ID; S3:创建注销定时器接口,参数包括定时器ID,无返回值; S4:创建释放接口 :无参数和返回值; S5:调用初始化接口,初始化计时周期t = t',对应的周期计数Ct = O,初始化定时 器管理器对象,启动并发工作线程池,创建并启动计时线程; S6:调用注册定时器接口,注册定时器Tu,完成定时器的注册参数添加,定时器模 块根据注册的定时周期,定时触发回调处理函数Func进行定时处理; S7:调用注销定时器接口,完成定时器的注销删除; S8:调用释放接口,停止计时线程,释放并发工作线程池,删除已注册的所有定时 器W及模块释放后的资源回收清理。[001引其中,所述的步骤S5中计时线程启动后,每经过周期t的时间,累加周期计数Ct = Ct + 1 O其中,所述的步骤S5中计时器线程处理的具体步骤是: S51:比较所有的定时器周期计数。,如果Ct mod。= 0(取余),即Ct为Cl的整数倍, 贝IJ将Cl对应的所有定时器TiJ的化nc和P投递到工作线程池中进行定时回调处理。依此循环, 直至计时线程退出。 其中,所述的步骤S6中一个或多个周期计数及已注册定时器集合组成定时器管理 器。 其中,所述的步骤S6中注册定时器的具体步骤是: S61:设待注册定时器定时周期为Tx,对应回调函数指针化ncx和回调参数Px,计算 所有已注册定时器周期Cl X t与Tx的最小公约数t '。若t辛t ',则更新所有的I,更新 计时周期t = t',调整周期计数;若* = *',则不做调整; S62:累加全局计时器ID = ID+1作为新定时器的IDx= ID; S63:计算Tx对应的周期计数如果Cx不存在,则创建新的周期计数Cx及其 对应的定时器映射关系,将计时器对象保存到Cx对应的定时器列表中,并返回对应的定时 器IDx;如果Cx已存在,则直接将计时器IDx和计时器对象保存到Cx对应的定时器列表中,并 返回对应的定时器IDx。 其中,所述的步骤S7中注销定时器的具体步骤是: S71:设待注销定时器ID为IDx,根据IDx获取对应定时器对象,计算Tx对应的周期计 数,如果Cx不存在,则返回失败;如果Cx存在,则从Cx对应的定时器映射中查找定时 器ID为IDx的定时器,如果找到则从映射中删除IDx及其映射的计时器;否则返回失败; S72:重新计算所有已注册定时周期CiXt的最小公约数,作为计时线程新的计时 周期t',更新所有的,更新计时周期t = t',调整周期计数 一种基于动态计时周期的进程内定时器管理系统,包括:计时线程、定时器管理 器、并发工作线程池,所述的计时线程包括计时周期t及对应的周期计数Ct,所述的定时器 管理器包括一个或多个定时器Tu及其对应的一个或多个定时周期Tl和一个或多个周期计 数Cl,所述的一个或多个定时器Tu对应有一个或多个定时器ID,且定时器ID具有唯一性,所 述的并发工作线程池包括一个或多个线程。 其中,所述的周期计数Ct初始值为0,每过一个计时周期t的时间,Ct累加1。[002引其中,所述的一个或多个定时器Tu均包含S个基本元素{1^1111(3,口},1'为定时器周 期,化nc为定时器线程回调处理函数指针,P为化nc回调处理参数。 其中,所述的定时器管理器还包括一个全局定时器ID,全局定时器ID初始为0,每 注册一个新定时器ID累加1,并将累加后的ID作为新定时器的ID。 其中,所述的工作线程池接收定时器的线程回调处理函数指针化nc及其对应的参 数P执行回调过程,完成最后的定时回调处理。【附图说明】 图1示出了实施例的流程结构图; 图2示出了定时器管理器的组成示意图; 图3示出了计时线程处理流程图; 图4示出了定时器注册流程图; 图5示出了注销计时器流程。【具体实施方式】 为进一步说明各实施例,本专利技术提供有附图。运些附图为本专利技术掲露内容的一部 分,其主要用W说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参 考运些内容,本领域普通技术人员应能理解其他可能的实施方式W及本专利技术的优点。现结 合附图和【具体实施方式】对本专利技术进一步说明。 本实施例由计时线程、定时器管理器、并发工作线程池组成一定时器管理系统。 图1示出了实施例的流程结构图,计时线程包括一个计时周期t和一个周期计数 Ct,Ct初始值为0,每过一个计时周期t的时间,Ct累加1,即:Ct = Ct+1; 图2示出了定时器管理器的组成,定时器管理器包括一个全局定时器ID、多个周期 计数Cl及其对应的多个定时器Tu。其中,全局定时器ID初始为0,每注册一个新定时器ID累 加1,并将累加后的ID作为新计时器的ID,W保证计时器ID的唯一性;Cl为周期计数,每个Cl 对应一种定时周期Ti,定义为;Tii~Tnj对应多个定时器,每个定时器Tij对应定时周 期为Tl,周期计数为Cl。每个定时器Tu包含S个基本元素{T,Func,P},T为定时器周期,Func 为定时器线程回调处理函数指针,P为化nc回调处理参数。运S个基本元素在注册定时器时 通过模块接口由上层应用输入,其中P为用户自定义变量,在进行定时回调处理时原样返 回。 并发工作线程池包括有多个线程,是定时器触发的执行者,定时器管理器周期性 的把定时器的线程回调处理函数指针化nc及其对应的参数P投递给工作线程池,由工作线 程池执行回调过程,完成最后的定时回调处理。 本领域技术人员应该知道,为确保定时器的ID唯一,本实施例将累加定时器ID作 为新定时器ID,其他只要实现定时器ID唯一的方式也可,本实施例只展示一种优选的方式。 本实施例的接口设计如下: 初始化接口:参数包括一个初始计时周期t',单位毫秒,返回初始化结果。当前第1页1 2 本文档来自技高网...

【技术保护点】
一种基于动态计时周期的进程内定时器管理方法,包括以下步骤:S1:创建初始化接口,参数包括计时周期t',返回初始化结果;S2:创建注册定时器接口,参数包括定时器周期T、定时器回调处理函数指针Func和回调参数P,返回定时器ID;S3:创建注销定时器接口,参数包括定时器ID,无返回值;S4:创建释放接口:无参数和返回值;S5:调用初始化接口,初始化计时周期t=t',对应的周期计数Ct=0,初始化定时器管理器对象,启动并发工作线程池,创建并启动计时线程;S6:调用注册定时器接口,注册定时器Tij,完成定时器的注册参数添加,定时器模块根据注册的定时周期,定时触发回调处理函数Func进行定时处理;S7:调用注销定时器接口,完成定时器的注销删除;S8:调用释放接口,停止计时线程,释放并发工作线程池,删除已注册的所有定时器以及模块释放后的资源回收清理。

【技术特征摘要】

【专利技术属性】
技术研发人员:王国清林文山夏欢崔跃
申请(专利权)人:厦门雅迅网络股份有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1