專利名稱:一種定時(shí)器的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及定時(shí)器技術(shù),特別涉及軟件定時(shí)器技術(shù)。
背景技術(shù):
眾所周知,定時(shí)器功能在軟件開發(fā)中是極其重要的,也是無處不在的。無論是在計(jì) 算機(jī)上的應(yīng)用軟件開發(fā)還是嵌入式產(chǎn)品下的開發(fā),都是必不可少的一個(gè)重要模塊,如電視 機(jī)中的定時(shí)開關(guān)機(jī)、播放器軟件中的播放進(jìn)度條顯示等等,都是離不開定時(shí)器管理的,現(xiàn)在 大多數(shù)產(chǎn)品的軟件開發(fā)中,定時(shí)器的管理都是基于硬件時(shí)鐘的接口函數(shù)或系統(tǒng)函數(shù)來實(shí)現(xiàn) 的,存在很大的不統(tǒng)一性,不方便軟件模塊的整體移植,另外在對多個(gè)定時(shí)器事件的管理方 面比較混亂。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題,就是為了克服目前軟件定時(shí)器不方便軟件模塊的整 體移植的缺點(diǎn),提供一種定時(shí)器的實(shí)現(xiàn)方法。 本發(fā)明解決其技術(shù)問題,采用的技術(shù)方案是,一種定時(shí)器的實(shí)現(xiàn)方法,其特征在 于,包括以下步驟 a.主線程創(chuàng)建定時(shí)器隊(duì)列,并將定時(shí)器隊(duì)列初始化,生成一個(gè)用來管理此隊(duì)列的
頭結(jié)點(diǎn),以便于對此定時(shí)器隊(duì)列的各種操作; b.用戶線程創(chuàng)建軟件定時(shí)器,初始化定時(shí)器參數(shù); c.主線程根據(jù)用戶創(chuàng)建的軟件定時(shí)器創(chuàng)建子線程,通過硬件時(shí)鐘初始化軟件時(shí) 鐘; d.主線程根據(jù)用戶創(chuàng)建軟件定時(shí)器的操作,完成該定時(shí)器在隊(duì)列中的注冊,在此 過程中進(jìn)行隊(duì)列操作共享鎖的加鎖操作,完成后解鎖; e.子線程按順序輪巡隊(duì)列中所有的用戶自定義的定時(shí)器結(jié)點(diǎn),利用select函數(shù) 逐個(gè)判斷其timer—remain—value計(jì)數(shù)器的值是否為0,若是則進(jìn)入g步驟,若不是則進(jìn)入f 步驟; f.對其timer_remain_value計(jì)數(shù)器進(jìn)行減"1"操作,回到e步驟;
g.執(zhí)行達(dá)到超時(shí)的定時(shí)器事件。 具體的,步驟b所述定時(shí)器參數(shù)包括定時(shí)器ID號(hào)、定時(shí)器超時(shí)時(shí)間、定時(shí)器離超時(shí)
的剩余時(shí)間、定時(shí)器鏈表指針、定時(shí)器隊(duì)列同步鎖機(jī)制、定時(shí)器超時(shí)操作的事件。 進(jìn)一步的,步驟g還包括以下步驟 gl.根據(jù)用戶選擇判斷該定時(shí)器功能是否還要繼續(xù)使用,若是則進(jìn)入g2步驟,若 不是則進(jìn)入g3 ; g2.將其timer_remain_value計(jì)數(shù)器重新設(shè)為timer_max_value ;
g3.在定時(shí)器隊(duì)列中注銷該定時(shí)器節(jié)點(diǎn)。
具體的,還包括以下步驟
3
h.用戶可隨時(shí)在主線程中通過定時(shí)器ID號(hào)進(jìn)行注銷操作。 本發(fā)明的有益效果是,通過上述一種定時(shí)器的實(shí)現(xiàn)方法對定時(shí)器進(jìn)行統(tǒng)一控制, 對多個(gè)定時(shí)器管理清晰,方便軟件模塊的整體移植,且采用select函數(shù)能獲取比較高的精 度。
具體實(shí)施例方式
下面結(jié)合實(shí)施例,詳細(xì)描述本發(fā)明的技術(shù)方案。 本發(fā)明提供了一種定時(shí)器的實(shí)現(xiàn)方法,首先主線程創(chuàng)建定時(shí)器隊(duì)列,并將定時(shí)器
隊(duì)列初始化,生成一個(gè)用來管理此隊(duì)列的頭結(jié)點(diǎn),以便于對此定時(shí)器隊(duì)列的各種操作,然后
用戶線程創(chuàng)建軟件定時(shí)器,初始化定時(shí)器參數(shù),主線程再根據(jù)用戶創(chuàng)建的軟件定時(shí)器創(chuàng)建
子線程,通過硬件時(shí)鐘初始化軟件時(shí)鐘,完成該定時(shí)器在隊(duì)列中的注冊,在此過程中進(jìn)行隊(duì)
列操作共享鎖的加鎖操作,完成后解鎖,子線程按順序輪巡隊(duì)列中所有的用戶自定義的定
時(shí)器結(jié)點(diǎn),利用select函數(shù)逐個(gè)判斷其timer—remain—value計(jì)數(shù)器的值是否為O,若是則
執(zhí)行達(dá)到超時(shí)的定時(shí)器事件,若不是則對其timer—remain—value計(jì)數(shù)器進(jìn)行減"1"操作,
回到子線程按順序輪巡那一步。 實(shí)施例 本例采用本發(fā)明方案進(jìn)行定時(shí)器的實(shí)現(xiàn)。 首先主線程創(chuàng)建定時(shí)器隊(duì)列,并將定時(shí)器隊(duì)列初始化,生成一個(gè)用來管理此隊(duì)列 的頭結(jié)點(diǎn),以便于對此定時(shí)器隊(duì)列的各種操作,如添加,刪除,清空等等,然后用戶線程創(chuàng) 建軟件定時(shí)器,初始化定時(shí)器參數(shù),定時(shí)器參數(shù)包括定時(shí)器ID號(hào)、定時(shí)器超時(shí)時(shí)間、定時(shí)器 離超時(shí)的剩余時(shí)間、定時(shí)器鏈表指針、定時(shí)器隊(duì)列同步鎖機(jī)制、定時(shí)器超時(shí)操作的事件,主 線程再根據(jù)用戶創(chuàng)建的軟件定時(shí)器創(chuàng)建子線程,通過硬件時(shí)鐘初始化軟件時(shí)鐘,完成該定 時(shí)器在隊(duì)列中的注冊,在此過程中進(jìn)行隊(duì)列操作共享鎖的加鎖操作,完成后解鎖,子線程 按順序輪巡隊(duì)列中所有的用戶自定義的定時(shí)器結(jié)點(diǎn),利用select函數(shù)逐個(gè)判斷其timer_ remain_value計(jì)數(shù)器的值是否為O,若不是則對其timer_remain_value計(jì)數(shù)器進(jìn)行減"l" 操作,回到子線程按順序輪巡那一步,若是則執(zhí)行達(dá)到超時(shí)的定時(shí)器事件,根據(jù)用戶選擇 判斷該定時(shí)器功能是否還要繼續(xù)使用,若是則將其timer—remairuvalue計(jì)數(shù)器重新設(shè)為 timerjiiax—value,若不是則在定時(shí)器隊(duì)列中注銷該定時(shí)器節(jié)點(diǎn),用戶可隨時(shí)在主線程中通 過定時(shí)器ID號(hào)進(jìn)行注銷操作。
權(quán)利要求
一種定時(shí)器的實(shí)現(xiàn)方法,其特征在于,包括以下步驟a.主線程創(chuàng)建定時(shí)器隊(duì)列,并將定時(shí)器隊(duì)列初始化,生成一個(gè)用來管理此隊(duì)列的頭結(jié)點(diǎn),以便于對此定時(shí)器隊(duì)列的各種操作;b.用戶線程創(chuàng)建軟件定時(shí)器,初始化定時(shí)器參數(shù);c.主線程根據(jù)用戶創(chuàng)建的軟件定時(shí)器創(chuàng)建子線程,通過硬件時(shí)鐘初始化軟件時(shí)鐘;d.主線程根據(jù)用戶創(chuàng)建軟件定時(shí)器的操作,完成該定時(shí)器在隊(duì)列中的注冊,在此過程中進(jìn)行隊(duì)列操作共享鎖的加鎖操作,完成后解鎖;e.子線程按順序輪巡隊(duì)列中所有的用戶自定義的定時(shí)器結(jié)點(diǎn),利用select函數(shù)逐個(gè)判斷其timer_remain_value計(jì)數(shù)器的值是否為0,若是則進(jìn)入g步驟,若不是則進(jìn)入f步驟;f.對其timer_remain_value計(jì)數(shù)器進(jìn)行減“1”操作,回到e步驟;g.執(zhí)行達(dá)到超時(shí)的定時(shí)器事件。
2. 根據(jù)權(quán)利要求l所述一種定時(shí)器的實(shí)現(xiàn)方法,其特征在于,步驟b所述定時(shí)器參數(shù)包 括定時(shí)器ID號(hào)、定時(shí)器超時(shí)時(shí)間、定時(shí)器離超時(shí)的剩余時(shí)間、定時(shí)器鏈表指針、定時(shí)器隊(duì)列 同步鎖機(jī)制、定時(shí)器超時(shí)操作的事件。
3. 根據(jù)權(quán)利要求1所述一種定時(shí)器的實(shí)現(xiàn)方法,其特征在于,步驟g還包括以下步驟 gl.根據(jù)用戶選擇判斷該定時(shí)器功能是否還要繼續(xù)使用,若是則進(jìn)入g2步驟,若不是則進(jìn)入g3 ;g2.將其timer_remain_value計(jì)數(shù)器重新設(shè)為timer_max_value ; g3.在定時(shí)器隊(duì)列中注銷該定時(shí)器節(jié)點(diǎn)。
4. 根據(jù)權(quán)利要求1所述一種定時(shí)器的實(shí)現(xiàn)方法,其特征在于,還包括以下步驟h. 用戶可隨時(shí)在主線程中通過定時(shí)器ID號(hào)進(jìn)行注銷操作。
全文摘要
本發(fā)明涉及定時(shí)器技術(shù)。本發(fā)明解決了目前軟件定時(shí)器不方便軟件模塊的整體移植的問題,提供了一種定時(shí)器的實(shí)現(xiàn)方法,其技術(shù)方案可概括為首先主線程創(chuàng)建定時(shí)器隊(duì)列,初始化定時(shí)器隊(duì)列,生成一個(gè)用來管理此隊(duì)列的頭結(jié)點(diǎn),然后用戶線程創(chuàng)建軟件定時(shí)器,初始化定時(shí)器參數(shù),主線程再創(chuàng)建子線程,通過硬件時(shí)鐘初始化軟件時(shí)鐘,完成該定時(shí)器在隊(duì)列中的注冊,在此過程中進(jìn)行隊(duì)列操作共享鎖的加鎖操作,子線程按順序輪巡隊(duì)列中所有的用戶自定義的定時(shí)器結(jié)點(diǎn),逐個(gè)判斷其計(jì)數(shù)器的值是否為0,若是則執(zhí)行達(dá)到超時(shí)的定時(shí)器事件,若不是則對其計(jì)數(shù)器進(jìn)行減“1”操作,回到子線程按順序輪巡那一步。其有益效果是,方便,適用于定時(shí)器。
文檔編號(hào)G06F9/46GK101727352SQ200910311448
公開日2010年6月9日 申請日期2009年12月15日 優(yōu)先權(quán)日2009年12月15日
發(fā)明者尤金剛 申請人:四川長虹電器股份有限公司