[發明專利]一種多線程環境下定時器的設置方法無效
| 申請號: | 201110282740.5 | 申請日: | 2011-09-20 |
| 公開(公告)號: | CN103019805A | 公開(公告)日: | 2013-04-03 |
| 發明(設計)人: | 田之進;梁平;寧學軍 | 申請(專利權)人: | 佳都新太科技股份有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 510665 廣*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 多線程 環境 定時器 設置 方法 | ||
1.一種基于多線程環境下的定時器的設置方法,其特征在于,在傳統的采用一個雙向鏈表(稱為“鏈表1”),按超時時間順序管理所有定時器單元的基礎上,還增加了一個按照定時器唯一標識進行索引的索引數據結構,以及另外一個雙向鏈表用來按時間順序把在不同時間段觸發的第一個定時器單元連接起來,此鏈表稱為“鏈表2”;
所述索引數據結構,用于:當清除一個未觸發的定時器時,需要首先根據定時器的唯一標識查找到這個定時器單元,利用這個索引數據結構可以快速查找到需要清除的定時器單元,查找時間由原來的單純鏈表的組織方式的O(n)的時間效率提高到0(logen);
所述鏈表2,用于:當增加新定時器單元時,可以通過遍歷鏈表2更加快速定位到新定時器單元的插入位置,從而提高增加新定時器單元的時間效率。
2.根據權利要求1所述的索引數據結構,其特征在于,包括:
索引數據結構可以采用整數哈希函數的方式組織,也可以采用常用的編程語言中已經定義的map函數庫。
3.一種基于多線程環境下的定時器的設置方法,其特征在于,包括:
定時器循環執行線程定時取到前述傳統增量定時器鏈表的第一個定時器單元,將其超時時長減去timerTick時間值;如果新的超時時長大于0,則表示此定時器單元尚未超時,不需要進行任何操作;如果新的超時時長小于等于0,則表示此定時器單元已經超時,需要觸發超時操作,步驟如下:
1)執行定時器單元中指定的操作函數或發送指定的消息;
2)將這個定時器單元從前述鏈表1中刪除;
3)將這個定時器單元從前述鏈表2中刪除;
4)從索引結構中刪除當前定時器單元;
5)繼續遍歷鏈表1中的后繼元素,如果其超時時長大于0,則停止遍歷;如果其超時時長為0,則執行定時器單元中指定的操作函數或發送指定的消息;
6)繼續步驟5)。
4.一種基于多線程環境下的定時器的設置方法,其特征在于,包括:
當清除一個未觸發的定時器時,從索引結構中根據timerID查找到要刪除的定時器單元,執行如下操作:
1)如果此定時器在鏈表1中存在后繼單元,則將此后繼單元的超時時長值增加要清除的定時器單元的超時時長值;
2)從鏈表1中刪除此定時器單元;
3)如果此定時器存在于鏈表2中,則:將其從鏈表2中刪除;如果步驟1)調整后的后繼單元的超時時長值不為0,還需要將此后繼單元加入鏈表2中要刪除的定時器單元的位置;
4)從索引結構中刪除當前定時器單元。
5.一種基于多線程環境下的定時器的設置方法,其特征在于,包括:
當設置一個新的定時器單元時,執行如下操作:
1)向前述索引結構中增加新的定時器單元;
2)遍歷前述鏈表2,將其中的每個定時器單元的超時時長與新定時器要求的超時時長進行比較,如果新定時器的超時時長恰好等于其中某一個元素的超時時長,則找到前述鏈表2中當前元素在鏈表1中的位置,將新的定時器單元插入到其后;
3)如果新定時器的超時時長落在兩個相鄰的鏈表2的元素的中間位置(即大于當前元素的超時時長但小于后繼元素的超時時長),則將新定時器元素插入鏈表2當前元素的后面,并在鏈表1中的適當位置增加新定時器單元,其插入位置為鏈表2后繼元素在鏈表1中對應位置的前面;插入完成后還需要調整鏈表2后繼元素的超時時長。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于佳都新太科技股份有限公司,未經佳都新太科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110282740.5/1.html,轉載請聲明來源鉆瓜專利網。





