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

技术编号:10891187 阅读:81 留言:0更新日期:2015-01-08 20:00
本发明专利技术公开了一种嵌入式设备高可用性定时器的实现方法及定时器,涉及嵌入式设备定时器领域,该方法包括以下步骤:初始化定时器数据,创建定时任务链表;添加定时任务,从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再添加定时任务;判断定时任务是否为单次定时任务,如果是,则删除该定时任务,并删除定时任务链表节点;否则更新该定时任务,并修改定时任务链表节点的时间。本发明专利技术实现的定时器具有高精度、高效率、高安全性、高可用性,能满足各种嵌入式场合。

【技术实现步骤摘要】
嵌入式设备高可用性定时器的实现方法及定时器
本专利技术涉及嵌入式设备定时器领域,具体是涉及一种嵌入式设备高可用性定时器的实现方法及定时器。
技术介绍
嵌入式设备在通信、家用电器等领域都有很广泛的应用,嵌入式设备基本上都有定时任务的需求,所以需要用到定时器这个组件。嵌入式设备在使用定时器的过程中,可能会出现定时器任务挂死的现象,导致整个嵌入式系统瘫痪,存在安全隐患。此外,定时器在做检测定时任务时,一般都是固定最新间隔时间轮询,大量占用嵌入式设备的资源,导致效率低下。
技术实现思路
本专利技术的目的是为了克服上述
技术介绍
的不足,提供一种嵌入式设备高可用性定时器的实现方法及定时器,实现的定时器具有高精度、高效率、高安全性、高可用性,能满足各种嵌入式场合,并具有跨平台性,具有广泛的应用前景。本专利技术提供一种嵌入式设备高可用性定时器的实现方法,包括以下步骤:S1、初始化定时器数据,创建定时任务链表;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中;S2、添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数传入定时器,并将该定时任务备份到备用主机;S3、定时器从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则转到步骤S4;如果有定时任务到,则转到步骤S5;S4、如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再返回到步骤S2;S5、如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数,如果定时任务直接调用回调函数,则转到步骤S6;否则转到步骤S7;S6、如果定时任务直接调用回调函数,根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;S7、如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,转到步骤S8;S8、将定时任务消息发送到步骤S7中找到的消息队列地址,并根据该定时任务消息添加定时任务,转到步骤S9;S9、根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则转到步骤S11;如果不是单次定时任务,则转到步骤S10;S10、如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间;S11、如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点。在上述技术方案的基础上,所述定时任务链表按定时任务从小到大的顺序进行排序。在上述技术方案的基础上,所述定时任务的精度为1ms。本专利技术还提供一种嵌入式设备高可用性定时器,包括初始化单元、定时任务添加单元和单次定时任务处理单元,其中:所述初始化单元用于:初始化定时器数据,创建定时任务链表;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中;所述定时任务添加单元用于:添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数传入定时器,并将该定时任务备份到备用主机;从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再添加定时任务;如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数;如果定时任务直接调用回调函数,则根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,将定时任务消息发送到找到的消息队列地址,并根据该定时任务消息添加定时任务;所述单次定时任务处理单元用于:根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点;如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间。在上述技术方案的基础上,所述定时任务链表按定时任务从小到大的顺序进行排序。在上述技术方案的基础上,所述定时任务的精度为1ms。与现有技术相比,本专利技术的优点如下:本专利技术实现的定时器具有高精度、高效率、高安全性、高可用性,能满足各种嵌入式场合,并具有跨平台性,具有广泛的应用前景。附图说明图1是本专利技术实施例中嵌入式设备高可用性定时器的实现方法的流程图。具体实施方式下面结合附图及具体实施例对本专利技术作进一步的详细描述。参见图1所示,本专利技术实施例提供一种嵌入式设备高可用性定时器的实现方法,包括以下步骤:S1、初始化定时器数据,创建定时任务链表,定时任务链表是按定时任务从小到大的顺序进行排序的,定时任务的精度为1ms;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中。S2、添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数等参数传入定时器,并将该定时任务备份到备用主机。S3、定时器从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则转到步骤S4;如果有定时任务到,则转到步骤S5;S4、如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再返回到步骤S2;S5、如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数,如果定时任务直接调用回调函数,则转到步骤S6;否则转到步骤S7;S6、如果定时任务直接调用回调函数,根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;S7、如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,转到步骤S8;S8、将定时任务消息发送到步骤S7中找到的消息队列地址,并根据该定时任务消息添加定时任务,转到步骤S9;S9、根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则转到步骤S11;如果不是单次定时任务,则转到步骤S10;S10、如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间;S11、如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点。本专利技术实施例还提供一种嵌入式设备高可用性定时器,包括初始化单元、定时任务添加单元和单次定时任务处理单元,其中:初始化单元用于:初始化定本文档来自技高网...
嵌入式设备高可用性定时器的实现方法及定时器

【技术保护点】
一种嵌入式设备高可用性定时器的实现方法,其特征在于,包括以下步骤:S1、初始化定时器数据,创建定时任务链表;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中;S2、添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数传入定时器,并将该定时任务备份到备用主机;S3、定时器从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则转到步骤S4;如果有定时任务到,则转到步骤S5;S4、如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再返回到步骤S2;S5、如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数,如果定时任务直接调用回调函数,则转到步骤S6;否则转到步骤S7;S6、如果定时任务直接调用回调函数,根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;S7、如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,转到步骤S8;S8、将定时任务消息发送到步骤S7中找到的消息队列地址,并根据该定时任务消息添加定时任务,转到步骤S9;S9、根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则转到步骤S11;如果不是单次定时任务,则转到步骤S10;S10、如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间;S11、如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点。...

【技术特征摘要】
1.一种嵌入式设备高可用性定时器的实现方法,其特征在于,包括以下步骤:S1、初始化定时器数据,创建定时任务链表;注册以定时任务的消息队列ID为键值的HASH表以及定时任务消息队列;获取消息队列ID,创建消息队列,将消息队列ID作为键值、消息队列地址作为Hash表的值插入到HASH表中;S2、添加定时任务,定时任务添加时,将直接执行任务标志、单次定时任务标志、消息队列ID、定时任务时间和回调函数传入定时器,并将该定时任务备份到备用主机;S3、定时器从定时任务链表上查找是否有定时任务到,如果没有定时任务到,则转到步骤S4;如果有定时任务到,则转到步骤S5;S4、如果没有定时任务到,则继续检测定时任务,根据最快到达定时任务的时间或没有定时任务的时间,动态调整轮询定时任务链表的时间,再返回到步骤S2;S5、如果有定时任务到,则根据添加定时任务时传入定时器的直接执行任务标志,来判断定时任务是否直接调用回调函数,如果定时任务直接调用回调函数,则转到步骤S6;否则转到步骤S7;S6、如果定时任务直接调用回调函数,根据添加定时任务时传入定时器的回调函数和回调函数参数,执行该回调函数;S7、如果定时任务不直接调用回调函数,则以定时任务的队列ID作为键值,从HASH表中查找消息队列的地址;根据添加定时任务时传入定时器的消息队列ID,在HASH表查找消息队列地址,转到步骤S8;S8、将定时任务消息发送到步骤S7中找到的消息队列地址,并根据该定时任务消息添加定时任务,转到步骤S9;S9、根据添加定时任务时传入定时器的单次定时任务标志,来判断定时任务是否为单次定时任务,如果是单次定时任务,则转到步骤S11;如果不是单次定时任务,则转到步骤S10;S10、如果不是单次定时任务,则更新该定时任务,并修改定时任务链表节点的时间;S11、如果是单次定时任务,则删除该定时任务,并删除定时任务链表节点。2.如权利要求1所述的嵌入式设备高可用性定时器的实现方法,其特征在于:所述定时任务链表按定时任务从小到大的...

【专利技术属性】
技术研发人员:周鸣吴红青徐剑辉刘益
申请(专利权)人:烽火通信科技股份有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1