[发明专利]一种容错保序的事件调度方法及装置有效
申请号: | 201210022986.3 | 申请日: | 2012-02-02 |
公开(公告)号: | CN103246548A | 公开(公告)日: | 2013-08-14 |
发明(设计)人: | 刘可立;赵春刚;吴迪 | 申请(专利权)人: | 迈普通信技术股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F11/07 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 牛峥;王丽琴 |
地址: | 610041 四川省*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 容错 事件 调度 方法 装置 | ||
技术领域
本发明涉及数据通信领域,特别是在一种数据通信设备中,设备软件实现事件调度的容错及保序的方法及装置。
背景技术
数据通信设备的可靠性是衡量设备质量的关键因素之一。数据通信设备的高可靠性主要通过硬件备份、软件备份、软件容错几个方面来实现。运行于数据通信设备上的软件必须具有容错能力,保证软件最终执行结果与预期一致,这样才能提升整个设备的可靠性。
运行于数据通信设备中的软件需要处理多种类别的事件,这些事件一般具有相关性和时序性,同时在执行这些事件的过程中无法避免执行失败的情况出现。所以软件实现事件调度时必须考虑容错问题、时序问题和执行效率问题。为了软件最终的运行结果的正确性,并最终提高数据通信设备的可靠性,软件内部需要实现一种容错的、保证时序的事件调度方法,同时必须考虑此方法的执行效率。
现有技术中较多的实现方式是对容错性问题采用重试的方法处理,对时序性问题采用逐个处理的方式,将两者有效结合并考虑执行效率的方法较少。
发明内容
本发明提供了一种容错保序的事件调度方法及装置,解决软件运行过程中事件调度的容错性问题和时序性问题,并最终提高数据通信设备的执行效率与可靠性。
本发明实施例提供的一种容错保序的事件调度装置,包括请求队列模块、结果队列模块、阻塞队列模块、等待队列模块、错误队列模块和事件调度任务模块,
所述请求队列模块,用于以事件结点的形式存储外部任务发起的待处理事件;
所述结果队列模块,用于以事件结点的形式存储外部异步返回的事件处理结果;
所述阻塞队列模块,用于存储由于时序问题必须等待前序事件处理完成的事件结点;
所述等待队列模块,用于存储需要等待外部异步返回结果的事件结点;
所述错误队列模块,用于存储执行失败的事件结点;
所述事件调度任务模块,用于从请求队列模块中获取待处理事件,判断是否有冲突事件未执行完,若是,将待处理事件放入阻塞队列模块等待无冲突时执行;否则判断是否同步返回成功,若是,则将待处理事件放入等待队列模块,否则将待处理事件放入错误队列模块;
所述事件调度任务模块,还用于从结果队列模块中获取事件处理结果,并从等待队列模块中取出相匹配的等待事件结点,如果所述事件处理结果为成功,则执行阻塞队列模块中相冲突的事件结点;如果所述事件处理结果为失败,则将所述待处理事件放入错误队列模块。
较佳地,所述事件调度任务模块,还用于周期性地从错误队列模块中获取待处理事件,判断是否有冲突事件未执行完,若是,将待处理事件放入阻塞队列模块等待无冲突时执行;否则判断是否同步返回成功,若是,则将待处理事件放入等待队列模块,否则将待处理事件放入错误队列模块。
较佳地,该装置进一步包括空闲队列模块,用于预先分配固定数量的事件结点;当需求超过预分配事件结点数量时,从内存空间分配新的事件结点到空闲队列模块;当空闲队列模块中事件结点数大于预先分配的固定数量以及需求的事件结点数量时,则将多余的事件结点释放给内存空间;
所述请求队列模块用于在事件请求发起时,接收来自空闲队列模块的分配事件结点;
所述结果队列模块用于当外部异步返回的事件处理结果时,接收来自空闲队列的分配事件结点;还用于在所述事件调度任务模块从结果队列模块中获取事件处理结果,并从等待队列模块中取出相匹配的等待事件结点,如果所述事件处理结果为成功时,将所述事件处理结果对应的事件结点释放回空闲队列模块;
所述等待队列模块还用于在所述事件调度任务模块从结果队列模块中获取事件处理结果,并从等待队列模块中取出相匹配的等待事件结点,如果所述事件处理结果为成功时,将所述等待事件结点释放回空闲队列模块。
较佳地,所述装置位于数据通信设备中。
本发明实施例还提供一种容错保序的事件调度方法,该方法通过前述装置实现,包括如下步骤:
A1、从请求队列模块中获取待处理事件,判断是否有冲突事件未执行完,若是,将待处理事件放入阻塞队列模块等待无冲突时执行;否则判断是否同步返回成功,若是,则将待处理事件放入等待队列模块,否则将待处理事件放入错误队列模块;
B1、从结果队列模块中获取事件处理结果,并从等待队列模块中取出相匹配的等待事件结点,如果所述事件处理结果为成功,则执行阻塞队列模块中相冲突的事件结点;如果所述事件处理结果为失败,则将所述待处理事件放入错误队列模块;
C1、判断错误队列处理定时器是否超时,若是,执行步骤D1,否则结束本流程;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于迈普通信技术股份有限公司,未经迈普通信技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210022986.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种转筒反应器
- 下一篇:一种用于变换反应的反应器