嵌入式设备高可用性定时器的实现方法及定时器的制造方法

文档序号:6626238阅读:173来源:国知局
嵌入式设备高可用性定时器的实现方法及定时器的制造方法
【专利摘要】本发明公开了一种嵌入式设备高可用性定时器的实现方法及定时器,涉及嵌入式设备定时器领域,该方法包括以下步骤:初始化定时器数据,创建定时任务链表;添加定时任务,从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再添加定时任务;判断定时任务是否为单次定时任务,如果是,则删除该定时任务,并删除定时任务链表节点;否则更新该定时任务,并修改定时任务链表节点的时间。本发明实现的定时器具有高精度、高效率、高安全性、高可用性,能满足各种嵌入式场合。
【专利说明】嵌入式设备高可用性定时器的实现方法及定时器

【技术领域】
[0001]本发明涉及嵌入式设备定时器领域,具体是涉及一种嵌入式设备高可用性定时器的实现方法及定时器。

【背景技术】
[0002]嵌入式设备在通信、家用电器等领域都有很广泛的应用,嵌入式设备基本上都有定时任务的需求,所以需要用到定时器这个组件。嵌入式设备在使用定时器的过程中,可能会出现定时器任务挂死的现象,导致整个嵌入式系统瘫痪,存在安全隐患。此外,定时器在做检测定时任务时,一般都是固定最新间隔时间轮询,大量占用嵌入式设备的资源,导致效率低下。


【发明内容】

[0003]本发明的目的是为了克服上述【背景技术】的不足,提供一种嵌入式设备高可用性定时器的实现方法及定时器,实现的定时器具有高精度、高效率、高安全性、高可用性,能满足各种嵌入式场合,并具有跨平台性,具有广泛的应用前景。
[0004]本发明提供一种嵌入式设备高可用性定时器的实现方法,包括以下步骤:
[0005]S1、初始化定时器数据,创建定时任务链表;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中;
[0006]S2、添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数传入定时器,并将该定时任务备份到备用主机;
[0007]S3、定时器从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则转到步骤S4 ;如果有定时任务到,则转到步骤S5 ;
[0008]S4、如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再返回到步骤S2 ;
[0009]S5、如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数,如果定时任务直接调用回调函数,则转到步骤S6 ;否则转到步骤S7 ;
[0010]S6、如果定时任务直接调用回调函数,根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;
[0011]S7、如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,转到步骤S8 ;
[0012]S8、将定时任务消息发送到步骤S7中找到的消息队列地址,并根据该定时任务消息添加定时任务,转到步骤S9 ;
[0013]S9、根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则转到步骤Sll ;如果不是单次定时任务,则转到步骤SlO ;
[0014]S10、如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间;
[0015]S11、如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点。
[0016]在上述技术方案的基础上,所述定时任务链表按定时任务从小到大的顺序进行排序。
[0017]在上述技术方案的基础上,所述定时任务的精度为1ms。
[0018]本发明还提供一种嵌入式设备高可用性定时器,包括初始化单元、定时任务添加单元和单次定时任务处理单元,其中:
[0019]所述初始化单元用于:初始化定时器数据,创建定时任务链表;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中;
[0020]所述定时任务添加单元用于:添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数传入定时器,并将该定时任务备份到备用主机;从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再添加定时任务;如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数;如果定时任务直接调用回调函数,则根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,将定时任务消息发送到找到的消息队列地址,并根据该定时任务消息添加定时任务;
[0021]所述单次定时任务处理单元用于:根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点;如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间。
[0022]在上述技术方案的基础上,所述定时任务链表按定时任务从小到大的顺序进行排序。
[0023]在上述技术方案的基础上,所述定时任务的精度为1ms。
[0024]与现有技术相比,本发明的优点如下:
[0025]本发明实现的定时器具有闻精度、闻效率、闻安全性、闻可用性,能满足各种嵌入式场合,并具有跨平台性,具有广泛的应用前景。

【专利附图】

【附图说明】
[0026]图1是本发明实施例中嵌入式设备高可用性定时器的实现方法的流程图。

【具体实施方式】
[0027]下面结合附图及具体实施例对本发明作进一步的详细描述。
[0028]参见图1所示,本发明实施例提供一种嵌入式设备高可用性定时器的实现方法,包括以下步骤:
[0029]S1、初始化定时器数据,创建定时任务链表,定时任务链表是按定时任务从小到大的顺序进行排序的,定时任务的精度为Ims ;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中。
[0030]S2、添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数等参数传入定时器,并将该定时任务备份到备用主机。
[0031]S3、定时器从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则转到步骤S4 ;如果有定时任务到,则转到步骤S5 ;
[0032]S4、如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再返回到步骤S2 ;
[0033]S5、如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数,如果定时任务直接调用回调函数,则转到步骤S6 ;否则转到步骤S7 ;
[0034]S6、如果定时任务直接调用回调函数,根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;
[0035]S7、如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,转到步骤S8 ;
[0036]S8、将定时任务消息发送到步骤S7中找到的消息队列地址,并根据该定时任务消息添加定时任务,转到步骤S9 ;
[0037]S9、根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则转到步骤Sll ;如果不是单次定时任务,则转到步骤SlO ;
[0038]S10、如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间;
[0039]S11、如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点。
[0040]本发明实施例还提供一种嵌入式设备高可用性定时器,包括初始化单元、定时任务添加单元和单次定时任务处理单元,其中:
[0041]初始化单兀用于:初始化定时器数据,创建定时任务链表,定时任务链表是按定时任务从小到大的顺序进行排序的,定时任务的精度为Ims ;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中;
[0042]定时任务添加单元用于:添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数等参数传入定时器,并将该定时任务备份到备用主机;从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再添加定时任务;如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数;如果定时任务直接调用回调函数,则根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,将定时任务消息发送到找到的消息队列地址,并根据该定时任务消息添加定时任务;
[0043]单次定时任务处理单元用于:根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点;如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间。
[0044]本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
[0045]说明书中未详细描述的内容为本领域技术人员公知的现有技术。
【权利要求】
1.一种嵌入式设备高可用性定时器的实现方法,其特征在于,包括以下步骤: 51、初始化定时器数据,创建定时任务链表;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中; 52、添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数传入定时器,并将该定时任务备份到备用主机; 53、定时器从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则转到步骤S4 ;如果有定时任务到,则转到步骤S5 ; 54、如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再返回到步骤S2 ; 55、如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数,如果定时任务直接调用回调函数,则转到步骤S6 ;否则转到步骤S7 ; 56、如果定时任务直接调用回调函数,根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数; 57、如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,转到步骤S8; 58、将定时任务消息发送到步骤S7中找到的消息队列地址,并根据该定时任务消息添加定时任务,转到步骤S9 ; 59、根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则转到步骤Sll ;如果不是单次定时任务,则转到步骤SlO ; 510、如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间; 511、如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点。
2.如权利要求1所述的嵌入式设备高可用性定时器的实现方法,其特征在于:所述定时任务链表按定时任务从小到大的顺序进行排序。
3.如权利要求1或2所述的嵌入式设备高可用性定时器的实现方法,其特征在于:所述定时任务的精度为1ms。
4.一种嵌入式设备高可用性定时器,其特征在于:包括初始化单元、定时任务添加单元和单次定时任务处理单元,其中: 所述初始化单元用于:初始化定时器数据,创建定时任务链表;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中; 所述定时任务添加单元用于:添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数传入定时器,并将该定时任务备份到备用主机;从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再添加定时任务;如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数;如果定时任务直接调用回调函数,则根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,将定时任务消息发送到找到的消息队列地址,并根据该定时任务消息添加定时任务; 所述单次定时任务处理单元用于:根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点;如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间。
5.如权利要求4所述的嵌入式设备高可用性定时器,其特征在于:所述定时任务链表按定时任务从小到大的顺序进行排序。
6.如权利要求4或5所述的嵌入式设备高可用性定时器,其特征在于:所述定时任务的精度为1ms。
【文档编号】G06F9/48GK104268015SQ201410452803
【公开日】2015年1月7日 申请日期:2014年9月5日 优先权日:2014年9月5日
【发明者】周鸣, 吴红青, 徐剑辉, 刘益 申请人:烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1