一種基于動態(tài)計時周期的進程內定時器管理方法及系統(tǒng)的制作方法
【技術領域】
[0001] 本發(fā)明設及軟件設計領域,特別設及基于動態(tài)計時周期的進程內定時器管理方法 及系統(tǒng)。
【背景技術】
[0002] 在軟件設計中,定時器被頻繁用于界面刷新、數(shù)據(jù)采集、超時判斷等需要周期性執(zhí) 行的業(yè)務,因此經(jīng)常要為各種定時器創(chuàng)建獨立的定時線程。特別是對于模塊化設計的軟件, 由于定時器只模塊內部可見,導致大量定時線程的出現(xiàn);即便是共享定時線程,由于線程執(zhí) 行工作增多必然導致定時精度下降;運些都會影響軟件性能。
[0003] 本發(fā)明一種基于動態(tài)計時周期的進程內定時器管理方法及系統(tǒng),采用統(tǒng)一的計時 線程和可動態(tài)調整的計時周期,基于并發(fā)工作線程池模擬多種周期的定時器,簡化了定時 器管理,有效解決了軟件定時器多、定時線程多、定時精度差的問題,有效提升了軟件處理 性能。
【發(fā)明內容】
[0004] 本發(fā)明提出一種基于動態(tài)計時周期的進程內定時器管理方法及系統(tǒng),有效解決了 軟件定時器多、定時線程多、定時精度差的問題,提升了軟件處理性能。
[0005] 具體方案如下:
[0006] -種基于動態(tài)計時周期的進程內定時器管理方法,包括W下步驟:
[0007] SI:創(chuàng)建初始化接口,參數(shù)包括計時周期t',返回初始化結果;
[000引S2:創(chuàng)建注冊定時器接口,參數(shù)包括定時器周期T、定時器回調處理函數(shù)指針化nc 和回調參數(shù)P,返回定時器ID;
[0009] S3:創(chuàng)建注銷定時器接口,參數(shù)包括定時器ID,無返回值;
[0010] S4:創(chuàng)建釋放接口 :無參數(shù)和返回值;
[0011] S5:調用初始化接口,初始化計時周期t = t',對應的周期計數(shù)Ct = O,初始化定時 器管理器對象,啟動并發(fā)工作線程池,創(chuàng)建并啟動計時線程;
[0012] S6:調用注冊定時器接口,注冊定時器Tu,完成定時器的注冊參數(shù)添加,定時器模 塊根據(jù)注冊的定時周期,定時觸發(fā)回調處理函數(shù)Func進行定時處理;
[0013] S7:調用注銷定時器接口,完成定時器的注銷刪除;
[0014] S8:調用釋放接口,停止計時線程,釋放并發(fā)工作線程池,刪除已注冊的所有定時 器W及模塊釋放后的資源回收清理。
[001引其中,所述的步驟S5中計時線程啟動后,每經(jīng)過周期t的時間,累加周期計數(shù)Ct = Ct + 1 O
[0016]其中,所述的步驟S5中計時器線程處理的具體步驟是:
[0017] S51:比較所有的定時器周期計數(shù)。,如果Ct mod。= 0(取余),即Ct為Cl的整數(shù)倍, 貝IJ將Cl對應的所有定時器TiJ的化nc和P投遞到工作線程池中進行定時回調處理。依此循環(huán), 直至計時線程退出。
[0018] 其中,所述的步驟S6中一個或多個周期計數(shù)及已注冊定時器集合組成定時器管理 器。
[0019] 其中,所述的步驟S6中注冊定時器的具體步驟是:
[0020] S61:設待注冊定時器定時周期為Tx,對應回調函數(shù)指針化ncx和回調參數(shù)Px,計算 所有已注冊定時器周期Cl X t與Tx的最小公約數(shù)t '。若t辛t ',則更新所有的I
,更新 計時周期t = t',調整周期計數(shù)
;若* = *',則不做調整;
[0021 ] S62:累加全局計時器ID = ID+1作為新定時器的IDx= ID;
[0022] S63:計算Tx對應的周期計數(shù)
如果Cx不存在,則創(chuàng)建新的周期計數(shù)Cx及其 對應的定時器映射關系,將計時器對象保存到Cx對應的定時器列表中,并返回對應的定時 器IDx;如果Cx已存在,則直接將計時器IDx和計時器對象保存到Cx對應的定時器列表中,并 返回對應的定時器IDx。
[0023] 其中,所述的步驟S7中注銷定時器的具體步驟是:
[0024] S71:設待注銷定時器ID為IDx,根據(jù)IDx獲取對應定時器對象,計算Tx對應的周期計 數(shù)
,如果Cx不存在,則返回失敗;如果Cx存在,則從Cx對應的定時器映射中查找定時 器ID為IDx的定時器,如果找到則從映射中刪除IDx及其映射的計時器;否則返回失?。?br>[0025] S72:重新計算所有已注冊定時周期CiXt的最小公約數(shù),作為計時線程新的計時 周期t',更新所有的
,更新計時周期t = t',調整周期計數(shù)
[0026] 一種基于動態(tài)計時周期的進程內定時器管理系統(tǒng),包括:計時線程、定時器管理 器、并發(fā)工作線程池,所述的計時線程包括計時周期t及對應的周期計數(shù)Ct,所述的定時器 管理器包括一個或多個定時器Tu及其對應的一個或多個定時周期Tl和一個或多個周期計 數(shù)Cl,所述的一個或多個定時器Tu對應有一個或多個定時器ID,且定時器ID具有唯一性,所 述的并發(fā)工作線程池包括一個或多個線程。
[0027] 其中,所述的周期計數(shù)Ct初始值為0,每過一個計時周期t的時間,Ct累加1。
[002引其中,所述的一個或多個定時器Tu均包含S個基本元素{1^1111(3,口},1'為定時器周 期,化nc為定時器線程回調處理函數(shù)指針,P為化nc回調處理參數(shù)。
[0029] 其中,所述的定時器管理器還包括一個全局定時器ID,全局定時器ID初始為0,每 注冊一個新定時器ID累加1,并將累加后的ID作為新定時器的ID。
[0030] 其中,所述的工作線程池接收定時器的線程回調處理函數(shù)指針化nc及其對應的參 數(shù)P執(zhí)行回調過程,完成最后的定時回調處理。
【附圖說明】
[0031] 圖1示出了實施例的流程結構圖;
[0032] 圖2示出了定時器管理器的組成示意圖;
[0033] 圖3示出了計時線程處理流程圖;
[0034] 圖4示出了定時器注冊流程圖;
[0035] 圖5示出了注銷計時器流程。
【具體實施方式】
[0036] 為進一步說明各實施例,本發(fā)明提供有附圖。運些附圖為本發(fā)明掲露內容的一部 分,其主要用W說明實施例,并可配合說明書的相關描述來解釋實施例的運作原理。配合參 考運些內容,本領域普通技術人員應能理解其他可能的實施方式W及本發(fā)明的優(yōu)點?,F(xiàn)結 合附圖和【具體實施方式】對本發(fā)明進一步說明。
[0037] 本實施例由計時線程、定時器管理器、并發(fā)工作線程池組成一定時器管理系統(tǒng)。
[0038] 圖1示出了實施例的流程結構圖,計時線程包括一個計時周期t和一個周期計數(shù) Ct,Ct初始值為0,每過一個計時周期t的時間,Ct累加1,即:Ct = Ct+1;
[0039] 圖2示出了定時器管理器的組成,定時器管理器包括一個全局定時器ID、多個周期 計數(shù)Cl及其對應的多個定時器Tu。其中,全局定時器ID初始為0,每注冊一個新定時器ID累 加1,并將累加后的ID作為新計時器的ID,W保證計時器ID的唯一性;Cl為周期計數(shù),每個Cl 對應一種定時周期Ti,定義為
;Tii~Tnj對應多個定時器,每個定時器Tij對應定時周 期為Tl,周期計數(shù)為Cl。每個定時器Tu包含S個基本元素{T,F(xiàn)unc,P},T為定時器周期,F(xiàn)unc 為定時器線程回調處理函數(shù)指針,P為化nc回調處理參數(shù)。運S個基本元素在注冊定時器時 通過模塊接口由上層應用輸入,其中P為用戶自定義變量,在進行定時回調處理時原樣返 回。
[0040] 并發(fā)工作線程池包括有多個線程,是定時器觸發(fā)的執(zhí)行者,定時器管理器周期性 的把定時器的線程回調處理函數(shù)指針化nc及其對應的參數(shù)P投遞給工作線程池,由工作線 程池執(zhí)行回調過程,完成最后的定時回調處理。
[0041] 本領域技術人員應該知道,為確保定時器的ID唯一,本實施例將累加定時器ID作 為新定時器ID,其他只要實現(xiàn)定時器ID唯一的方式也可,本實施例只展示一種優(yōu)選的方式。
[0042] 本實施例的接口設計如下:
[0043] 初始化接口:參數(shù)包括一個初始計時周期t',單位毫秒,返回初始化結果。