[發明專利]一種基于C語言的異步延時執行方法及執行裝置有效
申請號: | 201710363591.2 | 申請日: | 2017-05-22 |
公開(公告)號: | CN107239276B | 公開(公告)日: | 2021-01-12 |
發明(設計)人: | 崔順升;段俊彪;陳景超;陳欽宇;黃福榮 | 申請(專利權)人: | 廣州安圣信息科技有限公司 |
主分類號: | G06F8/30 | 分類號: | G06F8/30 |
代理公司: | 佛山幫專知識產權代理事務所(普通合伙) 44387 | 代理人: | 胡麗琴 |
地址: | 510000 廣東省廣*** | 國省代碼: | 廣東;44 |
權利要求書: | 查看更多 | 說明書: | 查看更多 |
摘要: | |||
搜索關鍵詞: | 一種 基于 語言 異步 延時 執行 方法 裝置 | ||
本發明公開一種基于C語言的異步延時執行裝置,其包括結構體定義模塊、計數驅動模塊和異步延時(重)調用模塊;異步延時(重)調用模塊設有計數值模塊、注入事件模塊和事件標簽模塊,結構體定義模塊用于對事件結構體及需要發生的事件進行定義;計數驅動模塊用于采用時間單位對調用模塊中發生的注入事件進行計數,且在計數過程中,對觸發的事件進行隊列清除,對未觸發的事件進行計數累加;異步延時(重)調用模塊用于對指定的發生事件、事件異步發生的延時計數值和事件指針指向獲取指定存儲位置,并對同一事件標簽代表的事件重新計數注入。本發明采用異步延時調用,不阻塞主線程,且對CPU資源的消耗比實時操作系統小。
技術領域
本發明涉及一種延時執行方法,尤其涉及一種基于C語言的異步延時執行方法及執行裝置。
背景技術
異步延時執行,是一種對期望事件發生時間的延時和對期望事件延時發生不阻塞主線程的處理方法。
在面向對象的語言(例如C++、C#、Java等)中,可以采用多線程或異步函數實現;現有技術中,在C語言中采用實時操作系統(RealTimeOS)或采用多線程使用,但對小容量RAM和主頻較低的MCU來說,存在較大的堆棧消耗,且多線程間維護成本高,反而得不償失。
綜上,有必要設計一種基于C語言的異步延時執行方法及執行裝置來彌補上述缺陷。
發明內容
本發明提出一種基于C語言的異步延時執行方法及執行裝置,其解決了現有技術中在C語言中采用實時操作系統使用多線程導致堆棧消耗大和多線程間維護成本高的缺陷。本發明采用異步延時調用,不阻塞主線程,且對CPU資源的消耗比實時操作系統小。
本發明的技術方案是這樣實現的:
本發明公開一種基于C語言的異步延時執行裝置,其包括結構體定義模塊、計數驅動模塊和調用模塊;調用模塊設有計數值模塊、注入事件模塊和事件標簽模塊,且調用模塊包括異步延時調用模塊和異步延時重調用模塊;結構體定義模塊用于對事件結構體及需要發生的事件進行定義;計數驅動模塊用于采用時間單位對調用模塊中發生的注入事件進行計數,且在計數過程中,對觸發的事件進行隊列清除,對未觸發的事件進行計數累加;異步延時調用模塊用于對指定的發生事件、事件異步發生的延時計數值和事件指針指向獲取指定存儲位置;異步延時重調用模塊用于對指定的發生事件、事件異步發生的延時計數值和事件指針指向獲取指定存儲位置,并對同一事件標簽代表的事件重新計數注入。
其中,事件結構體包括事件啟動標志、事件啟動計數值、事件計數值和事件指針。
其中,事件啟動標志用于標記該事件是否在啟動延時異步調用中。
其中,事件啟動計數值用于記錄事件注入時設置的延時值。
其中,事件計數值用于在計數驅動模塊在每次計數時,采用自減方式進行事件異步延時觸發的倒數值。
其中,事件指針用于存儲異步延時觸發發生的事件的方法指針。
其中,在調用一次保證執行的情況下,采用異步延時調用模塊;其中異步延時調用模塊的工作流程為:在對指定事件調用后,該事件開始計數,中間重復調用同事件的異步延時調用模塊,該事件并不會重新計數,直到該事件達到指定計數值、觸發事件發生后,才可以調用異步延時調用模塊再次對事件進行調用。
其中,在調用完畢后,需根據實際情況,對將要發生的事件的執行時間進行隨時修改的情況下,采用異步延時重調用模塊;其中異步延時重調用模塊的工作流程為:在對指定事件調用后,該事件開始計數,中間重復調用同事件的異步延時重調用模塊,該事件重新計數;如果一直在該事件計數未到達前重復調用異步延時重調用模塊,則該事件會一直重置計數,事件將永遠不會發生。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣州安圣信息科技有限公司,未經廣州安圣信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710363591.2/2.html,轉載請聲明來源鉆瓜專利網。