[发明专利]一种基于C语言的异步延时执行方法及执行装置有效
申请号: | 201710363591.2 | 申请日: | 2017-05-22 |
公开(公告)号: | CN107239276B | 公开(公告)日: | 2021-01-12 |
发明(设计)人: | 崔顺升;段俊彪;陈景超;陈钦宇;黄福荣 | 申请(专利权)人: | 广州安圣信息科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 佛山帮专知识产权代理事务所(普通合伙) 44387 | 代理人: | 胡丽琴 |
地址: | 510000 广东省广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 语言 异步 延时 执行 方法 装置 | ||
1.一种基于C语言的异步延时执行装置,其特征在于,其包括结构体定义模块、计数驱动模块和调用模块;调用模块设有计数值模块、注入事件模块和事件标签模块,且调用模块包括异步延时调用模块和异步延时重调用模块;
结构体定义模块用于对事件结构体及需要发生的事件进行定义;
计数驱动模块用于采用时间单位对调用模块中发生的注入事件进行计数,且在计数过程中,对触发的事件进行队列清除,对未触发的事件进行计数累加;
异步延时调用模块用于对指定的发生事件、事件异步发生的延时计数值和事件指针指向获取指定存储位置;
异步延时重调用模块用于对指定的发生事件、事件异步发生的延时计数值和事件指针指向获取指定存储位置,并对同一事件标签代表的事件重新计数注入;
其中,在调用一次保证执行的情况下,采用异步延时调用模块;其中异步延时调用模块的工作流程为:在对指定事件调用后,该事件开始计数,中间重复调用同事件的异步延时调用模块,该事件并不会重新计数,直到该事件达到指定计数值、触发事件发生后,才可以调用异步延时调用模块再次对事件进行调用;
在调用完毕后,需根据实际情况,对将要发生的事件的执行时间进行随时修改的情况下,采用异步延时重调用模块;其中异步延时重调用模块的工作流程为:在对指定事件调用后,该事件开始计数,中间重复调用同事件的异步延时重调用模块,该事件重新计数;如果一直在该事件计数未到达前重复调用异步延时重调用模块,则该事件会一直重置计数,事件将永远不会发生。
2.如权利要求1所述的基于C语言的异步延时执行装置,其特征在于,事件结构体包括事件启动标志、事件启动计数值、事件计数值和事件指针。
3.如权利要求2所述的基于C语言的异步延时执行装置,其特征在于,事件启动标志用于标记该事件是否在启动延时异步调用中。
4.如权利要求3所述的基于C语言的异步延时执行装置,其特征在于,事件启动计数值用于记录事件注入时设置的延时值。
5.如权利要求4所述的基于C语言的异步延时执行装置,其特征在于,事件计数值用于在计数驱动模块在每次计数时,采用自减方式进行事件异步延时触发的倒数值。
6.如权利要求5所述的基于C语言的异步延时执行装置,其特征在于,事件指针用于存储异步延时触发发生的事件的方法指针。
7.一种如权利要求1-6中任一项所述的基于C语言的异步延时执行装置的执行方法,其特征在于,其包括如下步骤:
(S01)通过结构体定义模块定义多组需要发生的事件;
(S02)异步延时调用模块、异步延时重调用模块分别针对步骤(S01)中定义的事件进行编号,且设定每组事件异步发生的延时计数值和事件指针指向,并获取指定存储位置;
(S03)计数驱动模块每一间隔周期执行一次,每次执行均遍历步骤(S01)中定义的多个事件,如果事件启动标志为启动状态,则计数驱动模块将自减该事件的计数值,当该事件的计数值自减为0时,表示该事件已达到步骤(S02)中延时计数值的设定值,计数驱动模块通过该事件的事件指针,触发执行该事件;如果事件启动标志为未启动状态,则计数驱动模块将跳过此事件的驱动,执行步骤(S04);
(S04)异步延时重调用模块对同一事件标签代表的事件重新计数注入。
8.如权利要求7所述的基于C语言的异步延时执行装置的执行方法,其特征在于,步骤(S03)中,间隔周期为1ms。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州安圣信息科技有限公司,未经广州安圣信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710363591.2/1.html,转载请声明来源钻瓜专利网。