The invention discloses an asynchronous delay execution module based on C language, which includes the structure definition module, driver module and asynchronous delay count (RE) call module; asynchronous delay (RE) call module is provided with a counting module, event injection module and event tag module, structure definition module for the definition of event structure and to the event count; drive module is used for using the time unit to count into the event call module, and the counting process, the trigger event queue clearance, count to accumulate did not trigger the event; asynchronous delay (RE) call module is used for the specified events, events happen asynchronously the delay count and event pointer access to the specified storage location, and the label of the same event on behalf of the event count re injection. The invention adopts asynchronous delay call, does not block the main thread, and consumes less CPU resources than the real-time operating system.
【技术实现步骤摘要】
一种基于C语言的异步延时执行方法及执行模块
本专利技术涉及一种延时执行方法,尤其涉及一种基于C语言的异步延时执行方法及执行模块。
技术介绍
异步延时执行,是一种对期望事件发生时间的延时和对期望事件延时发生不阻塞主线程的处理方法。在面向对象的语言(例如C++、C#、Java等)中,可以采用多线程或异步函数实现;现有技术中,在C语言中采用实时操作系统(RealTimeOS)或采用多线程使用,但对小容量RAM和主频较低的MCU来说,存在较大的堆栈消耗,且多线程间维护成本高,反而得不偿失。综上,有必要设计一种基于C语言的异步延时执行方法及执行模块来弥补上述缺陷。
技术实现思路
本专利技术提出一种基于C语言的异步延时执行方法及执行模块,其解决了现有技术中在C语言中采用实时操作系统使用多线程导致堆栈消耗大和多线程间维护成本高的缺陷。本专利技术采用异步延时调用,不阻塞主线程,且对CPU资源的消耗比实时操作系统小。本专利技术的技术方案是这样实现的:本专利技术公开一种基于C语言的异步延时执行模块,其包括结构体定义模块、计数驱动模块和调用模块;调用模块设有计数值模块、注入事件模块和事件标签模块,且调用模块包括异步延时调用模块和异步延时重调用模块;结构体定义模块用于对事件结构体及需要发生的事件进行定义;计数驱动模块用于采用时间单位对调用模块中发生的注入事件进行计数,且在计数过程中,对触发的事件进行队列清除,对未触发的事件进行计数累加;异步延时调用模块用于对指定的发生事件、事件异步发生的延时计数值和事件指针指向获取指定存储位置;异步延时重调用模块用于对指定的发生事件、事件异步发生的延 ...
【技术保护点】
一种基于C语言的异步延时执行模块,其特征在于,其包括结构体定义模块、计数驱动模块和调用模块;调用模块设有计数值模块、注入事件模块和事件标签模块,且调用模块包括异步延时调用模块和异步延时重调用模块;结构体定义模块用于对事件结构体及需要发生的事件进行定义;计数驱动模块用于采用时间单位对调用模块中发生的注入事件进行计数,且在计数过程中,对触发的事件进行队列清除,对未触发的事件进行计数累加;异步延时调用模块用于对指定的发生事件、事件异步发生的延时计数值和事件指针指向获取指定存储位置;异步延时重调用模块用于对指定的发生事件、事件异步发生的延时计数值和事件指针指向获取指定存储位置,并对同一事件标签代表的事件重新计数注入。
【技术特征摘要】
1.一种基于C语言的异步延时执行模块,其特征在于,其包括结构体定义模块、计数驱动模块和调用模块;调用模块设有计数值模块、注入事件模块和事件标签模块,且调用模块包括异步延时调用模块和异步延时重调用模块;结构体定义模块用于对事件结构体及需要发生的事件进行定义;计数驱动模块用于采用时间单位对调用模块中发生的注入事件进行计数,且在计数过程中,对触发的事件进行队列清除,对未触发的事件进行计数累加;异步延时调用模块用于对指定的发生事件、事件异步发生的延时计数值和事件指针指向获取指定存储位置;异步延时重调用模块用于对指定的发生事件、事件异步发生的延时计数值和事件指针指向获取指定存储位置,并对同一事件标签代表的事件重新计数注入。2.如权利要求1所述的基于C语言的异步延时执行模块,其特征在于,事件结构体包括事件启动标志、事件启动计数值、事件计数值和事件指针。3.如权利要求2所述的基于C语言的异步延时执行模块,其特征在于,事件启动标志用于标记该事件是否在启动延时异步调用中。4.如权利要求3所述的基于C语言的异步延时执行模块,其特征在于,事件启动计数值用于记录事件注入时设置的延时值。5.如权利要求4所述的基于C语言的异步延时执行模块,其特征在于,事件计数值用于在计数驱动模块在每次计数时,采用自减方式进行事件异步延时触发的倒数值。6.如权利要求5所述的基于C语言的异步延时执行模块,其特征在于,事件指针用于存储异步延时触发发生的事件的方法指针。7.如权利要求1-6中任一项所述的基于C语言的异步延时执行模块,其特征在于,在调用一次保证执行的情况下,采用异步延时调用模块;其中异步延时调用模块的工作流程为:在对指定事件调用后,该...
【专利技术属性】
技术研发人员:崔顺升,段俊彪,陈景超,陈钦宇,黄福荣,
申请(专利权)人:广州安圣信息科技有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。