[發明專利]軟件定時器的實現方法和系統有效
| 申請號: | 201310439031.2 | 申請日: | 2013-09-24 |
| 公開(公告)號: | CN103473071A | 公開(公告)日: | 2013-12-25 |
| 發明(設計)人: | 李銳明;黃世華;鐘虎林;羅均文;朱敬毅;甘鳴春;別業輝 | 申請(專利權)人: | 深圳市路通網絡技術有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 深圳市深佳知識產權代理事務所(普通合伙) 44285 | 代理人: | 唐華明 |
| 地址: | 518057 廣東省深圳市南山區科豐路2號*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 軟件 定時器 實現 方法 系統 | ||
技術領域
本發明涉及定時器技術領域,更具體地說,涉及一種軟件定時器的實現方法和系統。
背景技術
在軟件開發過程中,需要用到大量的定時器(即軟件定時器),定時器的作用就是控制軟件等待某事件發生的時間間隔,具體在實現時,需要檢測定時器是否達到定時時長,如果是,則觸發相應的事件。目前常見的軟件定時器的實現方法有兩種:
一種是單隊列實現方法,該方法采用一個隊列進行定時器管理控制,即將定時器按定時時長從小到大的順序進行排列,當增加定時器時,根據定時時長從小到大的原則,插入到當前隊列的對應位置,該種方法雖然實現簡單,但在海量定時器場景下,定時器節點堆積數量大,定時器的定時效率低,導致定時器達到定時時長時不能及時觸發相應事件,使得服務器時延大。為了提高定時器的定時效率,目前提出一種多隊列定時器實現方法,該方法將所有的定時器中同一定時精度的定時器分為一組,通過輪詢方式檢測每一個隊列中的定時器是否超時。
發明人在實現本發明的過程中發現,目前的多隊列定時器實現方法,相對于單隊列實現方法,雖然效率有所提高,但是,會存在很多冗余遍歷定時器的操作,例如,假設有N個隊列,那么,當只有一個定時器時,系統還需要去檢測其它N-1個隊列有沒有定時器超時,這樣系統就白白耗費了輪詢N-1隊列的時間,因此,當定時器的數量較大時,定時器的定時效率仍然較低。
發明內容
本發明的目的是提供一種軟件定時器實現方法,以進一步提高定時器的定時效率。
為實現上述目的,本發明提供了如下技術方案:
一種軟件定時器的實現方法,包括:
預定義循環計時器;
依據所述循環計時器的計時位數,確定第一計時數組和第二計時數組,所述第一計時數組和所述第二計時數組相同,所述第一計時數組和所述第二計時數組的各個元素對應所述循環計時器的各個計時刻度;
當需要增加定時器時,判斷待增加的定時器的定時時長是否在所述循環計時器的計時時長范圍內;
如果是,則依據所述循環計時器當前的計時時刻與所述待增加的定時器的定時時長確定所述待增加的定時器對應的第一目的計時時刻,并將所述待增加的定時器掛載在所述第一計時數組中的第一目的計時時刻下的定時器隊列中;其中,所述第一目的計時時刻與當前計時時刻的差值為所述待增加的定時器的定時時長;
如果否,獲取將所述待增加的定時器的定時時長與所述循環計時器的計時時長做除法運算所得到的商值和余數值;依據所述循環計時器當前的計時時刻與所述余數確定所述待增加的定時器對應的第二目的計時時刻,并將所述待增加的定時器掛載在所述第二計時數組中的第二目的計時時刻下的定時器隊列中;并設置與所述待增加的定時器相對應的計數器,所述計數器的初始值大于或等于所述商值;其中,所述第二目的計時時刻與當前計時時刻的差值為所述余數值。
上述方法,優選的,當所述計數器的初始值大于所述商值時,還包括:掃描當前計時時刻下的定時器隊列,
當第一計時數組中的當前計時時刻下掛載有定時器時,確定當前計時時刻下掛載的定時器達到定時時長;
當第二計時數組中的當前計時時刻下掛載有定時器時,將當前計時時刻下掛載的所有定時器所對應的計數器減一,在當前計時時刻下掛載的定時器所對應的計數器計數值為目標計數值時,確定當前計時時刻下掛載的定時器達到定時時長;
其中,所述目標計數值為大于或等于零的整數,所述計數器的初始值依據第一公式確定,所述第一公式為:
計數器初始值=目標計數值+商值+1。
上述方法,優選的,當所述計數器的初始值等于所述商值時,還包括:掃描當前計時時刻下的定時器隊列,
當第一計時數組中的當前計時時刻下掛載有定時器時,確定當前計時時刻下掛載的定時器達到定時時長;
當第二計時數組中的當前計時時刻下掛載有定時器時,將當前計時時刻下掛載的所有定時器所對應的計數器減一,在當前計時時刻下掛載的定時器所對應的計數器計數值為零時,將第二計時數組中當前計時時刻下掛載的定時器移至所述第一計時數組的當前計時時刻下。
上述方法,優選的,當判斷出有定時器達到定時時長時,還包括:
判斷所述達到定時時長的定時器是否為循環定時器,如果是,則增加相同定時時長的定時器。
上述方法,優選的,還包括:
如果所述達到定時時長的定時器不是循環定時器,則將所述達到定時時長的定時器釋放并進行緩存。
上述方法,優選的,對當前計時時刻下的定時器隊列進行掃描后,還包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市路通網絡技術有限公司,未經深圳市路通網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310439031.2/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種分布式java程序運行方法、裝置和系統
- 下一篇:無螺絲彈性眼鏡架





