两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法及定時器的制造方法

文檔序號:6626238閱讀:195來源:國知局
嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法及定時器的制造方法
【專利摘要】本發(fā)明公開了一種嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法及定時器,涉及嵌入式設(shè)備定時器領(lǐng)域,該方法包括以下步驟:初始化定時器數(shù)據(jù),創(chuàng)建定時任務(wù)鏈表;添加定時任務(wù),從定時任務(wù)鏈表上查找是否有定時任務(wù)到,如果沒有定時任務(wù)到,則繼續(xù)檢測定時任務(wù),根據(jù)最快到達(dá)定時任務(wù)的時間或沒有定時任務(wù)的時間,動態(tài)調(diào)整輪詢定時任務(wù)鏈表的時間,再添加定時任務(wù);判斷定時任務(wù)是否為單次定時任務(wù),如果是,則刪除該定時任務(wù),并刪除定時任務(wù)鏈表節(jié)點(diǎn);否則更新該定時任務(wù),并修改定時任務(wù)鏈表節(jié)點(diǎn)的時間。本發(fā)明實(shí)現(xiàn)的定時器具有高精度、高效率、高安全性、高可用性,能滿足各種嵌入式場合。
【專利說明】嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法及定時器

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式設(shè)備定時器領(lǐng)域,具體是涉及一種嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法及定時器。

【背景技術(shù)】
[0002]嵌入式設(shè)備在通信、家用電器等領(lǐng)域都有很廣泛的應(yīng)用,嵌入式設(shè)備基本上都有定時任務(wù)的需求,所以需要用到定時器這個組件。嵌入式設(shè)備在使用定時器的過程中,可能會出現(xiàn)定時器任務(wù)掛死的現(xiàn)象,導(dǎo)致整個嵌入式系統(tǒng)癱瘓,存在安全隱患。此外,定時器在做檢測定時任務(wù)時,一般都是固定最新間隔時間輪詢,大量占用嵌入式設(shè)備的資源,導(dǎo)致效率低下。


【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的是為了克服上述【背景技術(shù)】的不足,提供一種嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法及定時器,實(shí)現(xiàn)的定時器具有高精度、高效率、高安全性、高可用性,能滿足各種嵌入式場合,并具有跨平臺性,具有廣泛的應(yīng)用前景。
[0004]本發(fā)明提供一種嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法,包括以下步驟:
[0005]S1、初始化定時器數(shù)據(jù),創(chuàng)建定時任務(wù)鏈表;注冊以定時任務(wù)的消息隊列ID為鍵值的HASH表以及定時任務(wù)消息隊列;獲取消息隊列ID,創(chuàng)建消息隊列,將消息隊列ID作為鍵值、消息隊列地址作為Hash表的值插入到HASH表中;
[0006]S2、添加定時任務(wù),定時任務(wù)添加時,將直接執(zhí)行任務(wù)標(biāo)志、單次定時任務(wù)標(biāo)志、消息隊列ID、定時任務(wù)時間和回調(diào)函數(shù)傳入定時器,并將該定時任務(wù)備份到備用主機(jī);
[0007]S3、定時器從定時任務(wù)鏈表上查找是否有定時任務(wù)到,如果沒有定時任務(wù)到,則轉(zhuǎn)到步驟S4 ;如果有定時任務(wù)到,則轉(zhuǎn)到步驟S5 ;
[0008]S4、如果沒有定時任務(wù)到,則繼續(xù)檢測定時任務(wù),根據(jù)最快到達(dá)定時任務(wù)的時間或沒有定時任務(wù)的時間,動態(tài)調(diào)整輪詢定時任務(wù)鏈表的時間,再返回到步驟S2 ;
[0009]S5、如果有定時任務(wù)到,則根據(jù)添加定時任務(wù)時傳入定時器的直接執(zhí)行任務(wù)標(biāo)志,來判斷定時任務(wù)是否直接調(diào)用回調(diào)函數(shù),如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),則轉(zhuǎn)到步驟S6 ;否則轉(zhuǎn)到步驟S7 ;
[0010]S6、如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),根據(jù)添加定時任務(wù)時傳入定時器的回調(diào)函數(shù)和回調(diào)函數(shù)參數(shù),執(zhí)行該回調(diào)函數(shù);
[0011]S7、如果定時任務(wù)不直接調(diào)用回調(diào)函數(shù),則以定時任務(wù)的隊列ID作為鍵值,從HASH表中查找消息隊列的地址;根據(jù)添加定時任務(wù)時傳入定時器的消息隊列ID,在HASH表查找消息隊列地址,轉(zhuǎn)到步驟S8 ;
[0012]S8、將定時任務(wù)消息發(fā)送到步驟S7中找到的消息隊列地址,并根據(jù)該定時任務(wù)消息添加定時任務(wù),轉(zhuǎn)到步驟S9 ;
[0013]S9、根據(jù)添加定時任務(wù)時傳入定時器的單次定時任務(wù)標(biāo)志,來判斷定時任務(wù)是否為單次定時任務(wù),如果是單次定時任務(wù),則轉(zhuǎn)到步驟Sll ;如果不是單次定時任務(wù),則轉(zhuǎn)到步驟SlO ;
[0014]S10、如果不是單次定時任務(wù),則更新該定時任務(wù),并修改定時任務(wù)鏈表節(jié)點(diǎn)的時間;
[0015]S11、如果是單次定時任務(wù),則刪除該定時任務(wù),并刪除定時任務(wù)鏈表節(jié)點(diǎn)。
[0016]在上述技術(shù)方案的基礎(chǔ)上,所述定時任務(wù)鏈表按定時任務(wù)從小到大的順序進(jìn)行排序。
[0017]在上述技術(shù)方案的基礎(chǔ)上,所述定時任務(wù)的精度為1ms。
[0018]本發(fā)明還提供一種嵌入式設(shè)備高可用性定時器,包括初始化單元、定時任務(wù)添加單元和單次定時任務(wù)處理單元,其中:
[0019]所述初始化單元用于:初始化定時器數(shù)據(jù),創(chuàng)建定時任務(wù)鏈表;注冊以定時任務(wù)的消息隊列ID為鍵值的HASH表以及定時任務(wù)消息隊列;獲取消息隊列ID,創(chuàng)建消息隊列,將消息隊列ID作為鍵值、消息隊列地址作為Hash表的值插入到HASH表中;
[0020]所述定時任務(wù)添加單元用于:添加定時任務(wù),定時任務(wù)添加時,將直接執(zhí)行任務(wù)標(biāo)志、單次定時任務(wù)標(biāo)志、消息隊列ID、定時任務(wù)時間和回調(diào)函數(shù)傳入定時器,并將該定時任務(wù)備份到備用主機(jī);從定時任務(wù)鏈表上查找是否有定時任務(wù)到,如果沒有定時任務(wù)到,則繼續(xù)檢測定時任務(wù),根據(jù)最快到達(dá)定時任務(wù)的時間或沒有定時任務(wù)的時間,動態(tài)調(diào)整輪詢定時任務(wù)鏈表的時間,再添加定時任務(wù);如果有定時任務(wù)到,則根據(jù)添加定時任務(wù)時傳入定時器的直接執(zhí)行任務(wù)標(biāo)志,來判斷定時任務(wù)是否直接調(diào)用回調(diào)函數(shù);如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),則根據(jù)添加定時任務(wù)時傳入定時器的回調(diào)函數(shù)和回調(diào)函數(shù)參數(shù),執(zhí)行該回調(diào)函數(shù);如果定時任務(wù)不直接調(diào)用回調(diào)函數(shù),則以定時任務(wù)的隊列ID作為鍵值,從HASH表中查找消息隊列的地址;根據(jù)添加定時任務(wù)時傳入定時器的消息隊列ID,在HASH表查找消息隊列地址,將定時任務(wù)消息發(fā)送到找到的消息隊列地址,并根據(jù)該定時任務(wù)消息添加定時任務(wù);
[0021]所述單次定時任務(wù)處理單元用于:根據(jù)添加定時任務(wù)時傳入定時器的單次定時任務(wù)標(biāo)志,來判斷定時任務(wù)是否為單次定時任務(wù),如果是單次定時任務(wù),則刪除該定時任務(wù),并刪除定時任務(wù)鏈表節(jié)點(diǎn);如果不是單次定時任務(wù),則更新該定時任務(wù),并修改定時任務(wù)鏈表節(jié)點(diǎn)的時間。
[0022]在上述技術(shù)方案的基礎(chǔ)上,所述定時任務(wù)鏈表按定時任務(wù)從小到大的順序進(jìn)行排序。
[0023]在上述技術(shù)方案的基礎(chǔ)上,所述定時任務(wù)的精度為1ms。
[0024]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:
[0025]本發(fā)明實(shí)現(xiàn)的定時器具有聞精度、聞效率、聞安全性、聞可用性,能滿足各種嵌入式場合,并具有跨平臺性,具有廣泛的應(yīng)用前景。

【專利附圖】

【附圖說明】
[0026]圖1是本發(fā)明實(shí)施例中嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法的流程圖。

【具體實(shí)施方式】
[0027]下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。
[0028]參見圖1所示,本發(fā)明實(shí)施例提供一種嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法,包括以下步驟:
[0029]S1、初始化定時器數(shù)據(jù),創(chuàng)建定時任務(wù)鏈表,定時任務(wù)鏈表是按定時任務(wù)從小到大的順序進(jìn)行排序的,定時任務(wù)的精度為Ims ;注冊以定時任務(wù)的消息隊列ID為鍵值的HASH表以及定時任務(wù)消息隊列;獲取消息隊列ID,創(chuàng)建消息隊列,將消息隊列ID作為鍵值、消息隊列地址作為Hash表的值插入到HASH表中。
[0030]S2、添加定時任務(wù),定時任務(wù)添加時,將直接執(zhí)行任務(wù)標(biāo)志、單次定時任務(wù)標(biāo)志、消息隊列ID、定時任務(wù)時間和回調(diào)函數(shù)等參數(shù)傳入定時器,并將該定時任務(wù)備份到備用主機(jī)。
[0031]S3、定時器從定時任務(wù)鏈表上查找是否有定時任務(wù)到,如果沒有定時任務(wù)到,則轉(zhuǎn)到步驟S4 ;如果有定時任務(wù)到,則轉(zhuǎn)到步驟S5 ;
[0032]S4、如果沒有定時任務(wù)到,則繼續(xù)檢測定時任務(wù),根據(jù)最快到達(dá)定時任務(wù)的時間或沒有定時任務(wù)的時間,動態(tài)調(diào)整輪詢定時任務(wù)鏈表的時間,再返回到步驟S2 ;
[0033]S5、如果有定時任務(wù)到,則根據(jù)添加定時任務(wù)時傳入定時器的直接執(zhí)行任務(wù)標(biāo)志,來判斷定時任務(wù)是否直接調(diào)用回調(diào)函數(shù),如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),則轉(zhuǎn)到步驟S6 ;否則轉(zhuǎn)到步驟S7 ;
[0034]S6、如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),根據(jù)添加定時任務(wù)時傳入定時器的回調(diào)函數(shù)和回調(diào)函數(shù)參數(shù),執(zhí)行該回調(diào)函數(shù);
[0035]S7、如果定時任務(wù)不直接調(diào)用回調(diào)函數(shù),則以定時任務(wù)的隊列ID作為鍵值,從HASH表中查找消息隊列的地址;根據(jù)添加定時任務(wù)時傳入定時器的消息隊列ID,在HASH表查找消息隊列地址,轉(zhuǎn)到步驟S8 ;
[0036]S8、將定時任務(wù)消息發(fā)送到步驟S7中找到的消息隊列地址,并根據(jù)該定時任務(wù)消息添加定時任務(wù),轉(zhuǎn)到步驟S9 ;
[0037]S9、根據(jù)添加定時任務(wù)時傳入定時器的單次定時任務(wù)標(biāo)志,來判斷定時任務(wù)是否為單次定時任務(wù),如果是單次定時任務(wù),則轉(zhuǎn)到步驟Sll ;如果不是單次定時任務(wù),則轉(zhuǎn)到步驟SlO ;
[0038]S10、如果不是單次定時任務(wù),則更新該定時任務(wù),并修改定時任務(wù)鏈表節(jié)點(diǎn)的時間;
[0039]S11、如果是單次定時任務(wù),則刪除該定時任務(wù),并刪除定時任務(wù)鏈表節(jié)點(diǎn)。
[0040]本發(fā)明實(shí)施例還提供一種嵌入式設(shè)備高可用性定時器,包括初始化單元、定時任務(wù)添加單元和單次定時任務(wù)處理單元,其中:
[0041]初始化單兀用于:初始化定時器數(shù)據(jù),創(chuàng)建定時任務(wù)鏈表,定時任務(wù)鏈表是按定時任務(wù)從小到大的順序進(jìn)行排序的,定時任務(wù)的精度為Ims ;注冊以定時任務(wù)的消息隊列ID為鍵值的HASH表以及定時任務(wù)消息隊列;獲取消息隊列ID,創(chuàng)建消息隊列,將消息隊列ID作為鍵值、消息隊列地址作為Hash表的值插入到HASH表中;
[0042]定時任務(wù)添加單元用于:添加定時任務(wù),定時任務(wù)添加時,將直接執(zhí)行任務(wù)標(biāo)志、單次定時任務(wù)標(biāo)志、消息隊列ID、定時任務(wù)時間和回調(diào)函數(shù)等參數(shù)傳入定時器,并將該定時任務(wù)備份到備用主機(jī);從定時任務(wù)鏈表上查找是否有定時任務(wù)到,如果沒有定時任務(wù)到,則繼續(xù)檢測定時任務(wù),根據(jù)最快到達(dá)定時任務(wù)的時間或沒有定時任務(wù)的時間,動態(tài)調(diào)整輪詢定時任務(wù)鏈表的時間,再添加定時任務(wù);如果有定時任務(wù)到,則根據(jù)添加定時任務(wù)時傳入定時器的直接執(zhí)行任務(wù)標(biāo)志,來判斷定時任務(wù)是否直接調(diào)用回調(diào)函數(shù);如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),則根據(jù)添加定時任務(wù)時傳入定時器的回調(diào)函數(shù)和回調(diào)函數(shù)參數(shù),執(zhí)行該回調(diào)函數(shù);如果定時任務(wù)不直接調(diào)用回調(diào)函數(shù),則以定時任務(wù)的隊列ID作為鍵值,從HASH表中查找消息隊列的地址;根據(jù)添加定時任務(wù)時傳入定時器的消息隊列ID,在HASH表查找消息隊列地址,將定時任務(wù)消息發(fā)送到找到的消息隊列地址,并根據(jù)該定時任務(wù)消息添加定時任務(wù);
[0043]單次定時任務(wù)處理單元用于:根據(jù)添加定時任務(wù)時傳入定時器的單次定時任務(wù)標(biāo)志,來判斷定時任務(wù)是否為單次定時任務(wù),如果是單次定時任務(wù),則刪除該定時任務(wù),并刪除定時任務(wù)鏈表節(jié)點(diǎn);如果不是單次定時任務(wù),則更新該定時任務(wù),并修改定時任務(wù)鏈表節(jié)點(diǎn)的時間。
[0044]本領(lǐng)域的技術(shù)人員可以對本發(fā)明實(shí)施例進(jìn)行各種修改和變型,倘若這些修改和變型在本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則這些修改和變型也在本發(fā)明的保護(hù)范圍之內(nèi)。
[0045]說明書中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員公知的現(xiàn)有技術(shù)。
【權(quán)利要求】
1.一種嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法,其特征在于,包括以下步驟: 51、初始化定時器數(shù)據(jù),創(chuàng)建定時任務(wù)鏈表;注冊以定時任務(wù)的消息隊列ID為鍵值的HASH表以及定時任務(wù)消息隊列;獲取消息隊列ID,創(chuàng)建消息隊列,將消息隊列ID作為鍵值、消息隊列地址作為Hash表的值插入到HASH表中; 52、添加定時任務(wù),定時任務(wù)添加時,將直接執(zhí)行任務(wù)標(biāo)志、單次定時任務(wù)標(biāo)志、消息隊列ID、定時任務(wù)時間和回調(diào)函數(shù)傳入定時器,并將該定時任務(wù)備份到備用主機(jī); 53、定時器從定時任務(wù)鏈表上查找是否有定時任務(wù)到,如果沒有定時任務(wù)到,則轉(zhuǎn)到步驟S4 ;如果有定時任務(wù)到,則轉(zhuǎn)到步驟S5 ; 54、如果沒有定時任務(wù)到,則繼續(xù)檢測定時任務(wù),根據(jù)最快到達(dá)定時任務(wù)的時間或沒有定時任務(wù)的時間,動態(tài)調(diào)整輪詢定時任務(wù)鏈表的時間,再返回到步驟S2 ; 55、如果有定時任務(wù)到,則根據(jù)添加定時任務(wù)時傳入定時器的直接執(zhí)行任務(wù)標(biāo)志,來判斷定時任務(wù)是否直接調(diào)用回調(diào)函數(shù),如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),則轉(zhuǎn)到步驟S6 ;否則轉(zhuǎn)到步驟S7 ; 56、如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),根據(jù)添加定時任務(wù)時傳入定時器的回調(diào)函數(shù)和回調(diào)函數(shù)參數(shù),執(zhí)行該回調(diào)函數(shù); 57、如果定時任務(wù)不直接調(diào)用回調(diào)函數(shù),則以定時任務(wù)的隊列ID作為鍵值,從HASH表中查找消息隊列的地址;根據(jù)添加定時任務(wù)時傳入定時器的消息隊列ID,在HASH表查找消息隊列地址,轉(zhuǎn)到步驟S8; 58、將定時任務(wù)消息發(fā)送到步驟S7中找到的消息隊列地址,并根據(jù)該定時任務(wù)消息添加定時任務(wù),轉(zhuǎn)到步驟S9 ; 59、根據(jù)添加定時任務(wù)時傳入定時器的單次定時任務(wù)標(biāo)志,來判斷定時任務(wù)是否為單次定時任務(wù),如果是單次定時任務(wù),則轉(zhuǎn)到步驟Sll ;如果不是單次定時任務(wù),則轉(zhuǎn)到步驟SlO ; 510、如果不是單次定時任務(wù),則更新該定時任務(wù),并修改定時任務(wù)鏈表節(jié)點(diǎn)的時間; 511、如果是單次定時任務(wù),則刪除該定時任務(wù),并刪除定時任務(wù)鏈表節(jié)點(diǎn)。
2.如權(quán)利要求1所述的嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法,其特征在于:所述定時任務(wù)鏈表按定時任務(wù)從小到大的順序進(jìn)行排序。
3.如權(quán)利要求1或2所述的嵌入式設(shè)備高可用性定時器的實(shí)現(xiàn)方法,其特征在于:所述定時任務(wù)的精度為1ms。
4.一種嵌入式設(shè)備高可用性定時器,其特征在于:包括初始化單元、定時任務(wù)添加單元和單次定時任務(wù)處理單元,其中: 所述初始化單元用于:初始化定時器數(shù)據(jù),創(chuàng)建定時任務(wù)鏈表;注冊以定時任務(wù)的消息隊列ID為鍵值的HASH表以及定時任務(wù)消息隊列;獲取消息隊列ID,創(chuàng)建消息隊列,將消息隊列ID作為鍵值、消息隊列地址作為Hash表的值插入到HASH表中; 所述定時任務(wù)添加單元用于:添加定時任務(wù),定時任務(wù)添加時,將直接執(zhí)行任務(wù)標(biāo)志、單次定時任務(wù)標(biāo)志、消息隊列ID、定時任務(wù)時間和回調(diào)函數(shù)傳入定時器,并將該定時任務(wù)備份到備用主機(jī);從定時任務(wù)鏈表上查找是否有定時任務(wù)到,如果沒有定時任務(wù)到,則繼續(xù)檢測定時任務(wù),根據(jù)最快到達(dá)定時任務(wù)的時間或沒有定時任務(wù)的時間,動態(tài)調(diào)整輪詢定時任務(wù)鏈表的時間,再添加定時任務(wù);如果有定時任務(wù)到,則根據(jù)添加定時任務(wù)時傳入定時器的直接執(zhí)行任務(wù)標(biāo)志,來判斷定時任務(wù)是否直接調(diào)用回調(diào)函數(shù);如果定時任務(wù)直接調(diào)用回調(diào)函數(shù),則根據(jù)添加定時任務(wù)時傳入定時器的回調(diào)函數(shù)和回調(diào)函數(shù)參數(shù),執(zhí)行該回調(diào)函數(shù);如果定時任務(wù)不直接調(diào)用回調(diào)函數(shù),則以定時任務(wù)的隊列ID作為鍵值,從HASH表中查找消息隊列的地址;根據(jù)添加定時任務(wù)時傳入定時器的消息隊列ID,在HASH表查找消息隊列地址,將定時任務(wù)消息發(fā)送到找到的消息隊列地址,并根據(jù)該定時任務(wù)消息添加定時任務(wù); 所述單次定時任務(wù)處理單元用于:根據(jù)添加定時任務(wù)時傳入定時器的單次定時任務(wù)標(biāo)志,來判斷定時任務(wù)是否為單次定時任務(wù),如果是單次定時任務(wù),則刪除該定時任務(wù),并刪除定時任務(wù)鏈表節(jié)點(diǎn);如果不是單次定時任務(wù),則更新該定時任務(wù),并修改定時任務(wù)鏈表節(jié)點(diǎn)的時間。
5.如權(quán)利要求4所述的嵌入式設(shè)備高可用性定時器,其特征在于:所述定時任務(wù)鏈表按定時任務(wù)從小到大的順序進(jìn)行排序。
6.如權(quán)利要求4或5所述的嵌入式設(shè)備高可用性定時器,其特征在于:所述定時任務(wù)的精度為1ms。
【文檔編號】G06F9/48GK104268015SQ201410452803
【公開日】2015年1月7日 申請日期:2014年9月5日 優(yōu)先權(quán)日:2014年9月5日
【發(fā)明者】周鳴, 吳紅青, 徐劍輝, 劉益 申請人:烽火通信科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
无棣县| 奇台县| 色达县| 济源市| 天长市| 巴林左旗| 方正县| 贺兰县| 长葛市| 扎鲁特旗| 岳西县| 宣城市| 临泽县| 普陀区| 交城县| 浦江县| 罗城| 平远县| 舒兰市| 阳西县| 衢州市| 正定县| 木兰县| 仪征市| 中牟县| 宜昌市| 宣城市| 新营市| 壤塘县| 清涧县| 泰和县| 台中市| 卓尼县| 石渠县| 方城县| 崇左市| 柏乡县| 固安县| 华容县| 班戈县| 通海县|