基于前/后台任务的通信方法和装置的制作方法

文档序号:6465421阅读:111来源:国知局
专利名称:基于前/后台任务的通信方法和装置的制作方法
技术领域
本发明涉及通信领域,具体而言,涉及一种基于前/后台任务的 通信方法和装置。
背景技术
在嵌入式软件中,通常会用到前/后台任务完成某些功能的技
术,例如,在一个处理协议的高优先级的任务中,需要往慢速的Flash (闪存器)上写文件,或者需要向基于内容的存储器下发大量的表 项,如果这些工作全部在该高优先级的任务里完成,就会导致两个 严重后果
第一,中央处理器(Central Processing Unit,简称为CPU) — 直被这个高优先级的任务占用,优先级低于这个任务的所有任务都 不能及时执行;
第二,需要这个任务及时处理的更重要的消息不能被及时处理。
因此,为了解决上述问题,需要再创建一个优先级比较低的任 务,即,后台任务,图1是根据相关技术的前/后台任务关系的示意 图,如图1所示,后台任务用来处理比较耗费CPU的工作,那么, 前台任务(即,原来任务)只需要把这些工作通过消息发给后台任 务即可,这样,前台任务就不会长时间占用CPU。采用前/后台任务处理技术的特点是前台任务优先级高,后台任 务优先级低,后台任务需要设置一个比较大的緩冲区来緩存前台发
过来的消息,这些^皮纟爰沖的消息等CPU空闲时再进4亍处理。
可以看出,利用添加后台任务的技术可以解决上面提到的两个 问题,但是,在极端情况下,这种技术还是会存在一些问题,例如,
后台任务设置了 IOK大小的緩冲区,前台任务的突发性发送的消息 占用了整个緩沖区,这时,由于后台緩沖区已满,前台任务即使再 有消息需要处理,也无法把消息发给后台,只能把消息丢弃,然后, 上报失败结果给上层模块,许多上层模块(特别是协议模块)在接 收到失败结果之后,都会尝试再次执行先前失败的动作,这就会导 致这个优先级比较高的前台任务一直占用CPU进行这种一直失败 的动作,后台任务由于优先级较低而 一 直不能处理緩冲区内的消息。
因此,当前台任务给后台任务发送过量的消息时,如果后台任 务的緩冲区被消息填满,则会导致任务占用CPU时间不合理。目前 还没有解决上述问题的4支术方案。

发明内容
本发明旨在提供一种基于前/后台任务的通信方法和装置,用以 解决前/后台4壬务通信过禾呈中CPU占用时间不合理的问题。
根据本发明的一个方面,提供了 一种基于前/后台任务的通信方法。
根据本发明实施例的基于前/后台任务的通信方法包括设置步 骤,设置计数器,用于对后台任务中待处理的消息进行计数;第一 判断步骤,在往后台任务发送消息之前,判断计数器的计数值是否 大于第一阈值;在判断结果为是的情况下,将流控标志置位,将消 息延迟第一预定时间后再次尝试发送,执行第一判断步骤;在判断结果为否的情况下,进行到第二判断步骤;第二判断步骤,判断计 数器的计数值是否大于第二阈值,其中,第一阈值大于第二阈值; 在判断结果为否的情况下,将消息发送给后台任务;在判断结果为 是的情况下,进行到第三判断步骤;第三判断步骤,判断流控标志 是否被置位;在判断结果为是的情况下,将消息延迟第二预定时间 后再次尝试发送,执行第一判断步骤;在判断结果为否的情况下, 将消息发送给后台任务。
伊乙选i也,第一预定时间大于第二预定时间。
优选地,上述方法进一步包括在后台任务处理完一个消息的 情况下,对计数器执行减1操作。
优选地,在所将消息发送给后台任务之后,上述方法进一步包 括对计数器执行加1操作。
优选地,上述方法进一步包括第二设置步骤,设置流控标志, 其中,流控标志被置位时,表示当前数量是后台任务中待处理的消 息的凄t量减小后的结果,当流控标志没有^皮置4立时,表示当前凄t量 是后台任务中待处理的消息的数量增大后的结果。
优选地,在将消息发送给后台任务之后,进一步包括在流控 标志:故置位的情况下,将流控标志清除。
根据本发明的另 一方面,提供了 一种基于前/后台任务的通信装置。
根据本发明实施例的基于前/后台任务的通信装置包括设置模 块,用于设置计数器,其中,计数器用于对后台任务中待处理的消 息进行计数;第一判断模块,用于在往后台任务发送消息之前,判 断计数器的计数值是否大于第一阈值;第二判断模块,用于判断计数器的计数值是否大于第二阈值,其中,第一阈值大于第二阈值; 维护模块,用于设置流控标志,并对流控标志进行置位、清除操作; 第三判断模块,用于判断流控标志是否被置位;发送模块,用于将 消息发送给后台任务;调用模块,用于调用各个模块进行相关处理。
优选地,设置模块还用于对计数器执行减1或加1操作。
优选地,在第一判断模块的判断结果为是的情况下,调用模块 调用维护模块对流控标志进行置位操作,并在延迟第一预定时间之 后再次调用第 一判断模块;在第 一判断模块的判断结果为否的情况 下,调用模块调用第二判断模块。
优选地,在第二判断模块的判断结果为是的情况下,调用模块 调用第三判断模块;在第二判断模块的判断结果为否的情况下,调 用模块调用发送模块。
优选地,在第三判断模块的判断结果为是的情况下,调用模块 在延迟第二预定时间之后再次调用第一判断模块,其中,第一预定 时间大于第二预定时间;在第三判断模块的判断结果为否的情况 下,调用模块调用发送模块。
以上实施例利用流控机制控制前/后台通信,克服了当前台任务 过量给后台任务发消息时,如果后台任务的緩沖区被消息填满,会 导致任务占用CPU时间不合理,或者任务切换频繁的问题,使前 台任务可以适时地通过Task Delay让出 一段有策略的时间,将CPU 执行权给后台任务。


此处所说明的附图用来冲是供对本发明的进一步理解,构成本申 请的一部分,本发明的示意性实施例及其说明用于解释本发明,并
不构成对本发明的不当限定。在附图中
图1是根据相关技术的前/后台任务关系的示意图2是根据本发明实施例的基于前/后台任务的通信方法的流 程图3是根据本发明实施例的基于前/后台任务的通信方法的详 细流禾呈图4是根据本发明实施例的基于前/后台任务的通信装置的方 框图。
具体实施例方式
本发明利用流控才几制控制前/后台通信,有策略地让前台 <壬务以 Task Delay (任务延迟)的方式让出CPU的执行权来给后台任务使 用,可以平滑前/后台任务占用CPU的时间,避免出现后台任务由 于优先级低而不能合理使用CPU的情况,还可以避免CPU过多的 无用切换。下面将参考附图并结合实施例,来详细i兌明本发明。
方法实施例
根据本发明的实施例,提供了 一种基于前/后台任务的通信方 法。图2是根据本发明实施例的基于前/后台任务的通信方法的流程 图,如图2所示,该方法包^fe:步骤S202,设置步骤,设置计数器,用于对后台任务中待处理 的消息进4亍计数;即,在本发明实施例的方法中,首先,需要增加 一个计凄t器Counter (即,上述计凄t器的计凄t值)来记录当前未处理 消息数,后台任务每处理完一个消息Counter减1 ,需要说明的是, 在前台任务向后台任务发消息之前,判断后台任务的消息计数值;
步骤S204,第一判断步骤,在往后台任务发送消息之前,判断 计数器的计数值是否大于第一阈值;在判断结果为是的情况下,将 流控标志置位,将消息延迟第一预定时间后再次尝试发送,执行第 一判断步骤;在判断结果为否的情况下,进行到第二判断步骤;
步骤S206,第二判断步骤,判断计数器的计数值是否大于第二 阈值,其中,第一阈值大于第二阈值;在判断结果为否的情况下, 将消息发送给后台任务,对计数器执行加l操作,在流控标志被置 位的情况下,将流控标志清除;在判断结果为是的情况下,进行到 第三判断步骤;
步骤S208,第三判断步骤,判断流控标志是否^皮置位;在判断 结果为是的情况下,将消息延迟第二预定时间后再次尝试发送,执 行第一判断步骤;在判断结果为否的情况下,将消息发送给后台任 务,对计数器执行加l操作;其中,第一预定时间大于第二预定时 间。
并且,上述方法进一步包括第二i殳置步艰《,设置流控标志, 其中,流控标志被置位时,表示当前数量是后台任务中待处理的消 息的数量减小后的结果,当流控标志没有被置位时,表示当前数量 是后台任务中待处理的消息的数量增大后的结果。
下面结合实例详细说明本发明实施例的方法。图3是根据本发明实施例的基于前/后台任务的通信方法的详 细流程图,如图3所示,通过判断后台任务的消息计数值确定前/ 后台4壬务的通讯的具体流程如下
步骤S302,判断Counter是否大于Counter_On (即,上述第一 阈值),在判断结果为是的情况下(即,Counter超过CounterJ3n), 进行步骤S304,在判断结果为否的情况下(即,Counter不超过 Counter_On ),进行步骤S306;
步骤S304,前台任务延迟(Task Delay) —段较长时间(例如 2000毫秒),然后再次尝试发送,执行步骤S302,并将流控标志置 位,表示当前处于流控状态;
步骤S306,判断Counter是否在Counter—On和Counter—Off(即, 上述第二阈值)之间,在判断结果为是的情况下,进行步骤S308, 在判断结果为否的情况下(即,Counter低于Counter—Off),进行步 骤S312;
步骤S308,判断流控标志是否被置位,在判断结果为是的情况 下,进行步骤S310,在判断结果为否的情况下(即,Counter低于 Counter—Off),进行步骤S312;
步骤S310,前台任务Task Delay —段较短时间(例如500毫秒), 然后再次尝试发送,执行步骤S302;
步骤S312,将消息发给后台任务处理,并且,Counter力口 1,
如果流控标志;帔置位,则清除流控标志。装置实施例
根据本发明的另 一方面,提供了 一种基于前/后台任务的通信装 置。图4是根据本发明实施例的基于前/后台任务的通信装置的方框
图,如图4所示,该装置包括
设置模块402,用于设置计数器,其中,计数器用于对后台任 务中待处理的消息进行计数;还用于对计数器执行减1或加1操作;
第一判断模块404,连接至设置模块402,用于在往后台任务发 送消息之前,判断计数器的计数值是否大于第一阈值;
第二判断模块406,连接至设置^^块402,用于判断计数器的计 数值是否大于第二阈值,其中,第一阈值大于第二阈值;
维护^莫块408,用于设置流控标志,并对流控标志进行置位、 清除操作;
第三判断模块410,连接至维护模块408,用于判断流控标志是 否被置位;
发送模块412,用于在将消息发送给后台任务;
调用才莫块414,连冲妄至第一判断才莫块404、第二判断才莫块406、 维护模块408、第三判断模块410、发送模块412,用于调用各个模 块进行相关处理。
优选地,上述装置进一步包括第二设置模块(图中未示出), 用于设置流控标志,其中,流控标志被置位时,表示后台任务的待 处理的消息的数量为下降至当前数量,流控标志没有被置位时,表 示后台任务的待处理的消息的数量为上升至当前数量。下面对以上判断模块的具体操作进行详细描述。
(1 )在第一判断模块的判断结果为是的情况下,调用模块调用 维护模块对流控标志进行置位操作,并在延迟第 一预定时间之后再
次调用第一判断模块;在第一判断模块的判断结果为否的情况下, 调用模块调用第二判断模块;
(2 )在第二判断模块的判断结果为是的情况下,调用模块调用 第三判断模块;在第二判断模块的判断结果为否的情况下,调用模 块调用发送模块;
(3 )在第三判断模块的判断结果为是的情况下,调用模块在延 迟第二预定时间之后再次调用第一判断模块,其中,第一预定时间
大于第二预定时间;在第三判断模块的判断结果为否的情况下,调
用模块调用发送模块。
在以上本发明的实施例中,利用流控机制控制前/后台通信,有
任务使用,可以平滑前后台任务占用CPU的时间,避免后台任务由 于优先级低不能合理使用CPU的情况,还可以避免CPU过多的无 用切换。
显然,本领域的技术人员应该明白,上述的本发明的各模块或 各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算 装置上,或者分布在多个计算装置所组成的网络上,可选地,它们 可以用计算装置可执行的程序代码来实现,从而,可以将它们存储
在存储装置中由计算装置来执行,或者将它们分别制作成各个集成 电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模 块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的4呆护范围之内。
权利要求
1.一种基于前/后台任务的通信方法,其特征在于,包括设置步骤,设置计数器,用于对后台任务中待处理的消息进行计数;第一判断步骤,在往后台任务发送消息之前,判断所述计数器的计数值是否大于第一阈值;在判断结果为是的情况下,将流控标志置位,将所述消息延迟第一预定时间后再次尝试发送,执行所述第一判断步骤;在判断结果为否的情况下,进行到第二判断步骤;所述第二判断步骤,判断所述计数器的计数值是否大于第二阈值,其中,所述第一阈值大于所述第二阈值;在判断结果为否的情况下,将所述消息发送给所述后台任务;在判断结果为是的情况下,进行到第三判断步骤;所述第三判断步骤,判断流控标志是否被置位;在判断结果为是的情况下,将所述消息延迟第二预定时间后再次尝试发送,执行所述第一判断步骤;在判断结果为否的情况下,将所述消息发送给所述后台任务。
2. 根据权利要求1所述的通信方法,其特征在于所述第 一预定时间大于所述第二预定时间。
3. 根据权利要求1所述的通信方法,其特征在于,进一步包括在所述后台任务处理完一个消息的情况下,对所述计数器 执行减1操作。
4. 根据权利要求1所述的通信方法,其特征在于,在所将所述消 息发送给所述后台任务之后,进一步包括对所述计数器执行加1操作。
5. 根据权利要求1至4中任一项所述的通信方法,其特征在于, 进一步包括第二设置步骤,设置所述流控标志;其中,所述流控标志被置位时,表示当前数量是所述后台 任务中待处理的消息的数量减小后的结果,当所述流控标志没 有被置位时,表示当前数量是所述后台任务中待处理的消息的 数量增大后的结果。
6. 根据权利要求1至4中任一项所述的通信方法,其特征在于, 在将所述消息发送给所述后台任务之后,进一步包括在所述流控标志纟皮置位的情况下,将所述流控标志清除。
7. —种基于前/后台任务的通信装置,其特征在于,包括设置模块,用于设置计数器,其中,所述计数器用于对后 台任务中待处理的消息进行计数;第一判断模块,用于在往后台任务发送消息之前,判断所 述计数器的计数值是否大于第 一 阈值;第二判断模块,用于判断所述计数器的计数值是否大于第 二阈值,其中,所述第一阈值大于所述第二阈值;维护模块,用于设置流控标志,并对所述流控标志进行置 位、清除操作;第三判断模块,用于判断所述流控标志是否被置位; 发送模块,用于将所述消息发送给所述后台任务;调用模块,用于调用各个模块进行相关处理。
8. 根据权利要求7所述的通信装置,其特征在于,所述设置模块 还用于对所述计数器执行减1或加1操作。
9. 根据权利要求7或8所述的通信装置,其特征在于在所述第 一判断模块的判断结果为是的情况下,所述调用 模块调用所述维护模块对所述流控标志进行置位操作,并在延 迟第 一预定时间之后再次调用所述第一判断冲莫块;在所述第一 判断^^块的判断结果为否的情况下,所述调用模块调用所述第 二判断模块。
10. 根据权利要求7或8所述的通信装置,其特征在于在所述第二判断模块的判断结果为是的情况下,所述调用 模块调用所述第三判断模块;在所述第二判断模块的判断结果 为否的情况下,所述调用模块调用所述发送模块。
11. 根据权利要求7或8所述的通信装置,其特征在于在所述第三判断模块的判断结果为是的情况下,所述调用 模块在延迟第二预定时间之后再次调用所述第 一判断模块,其 中,所述第一预定时间大于所述第二预定时间;在所述第三判 断模块的判断结果为否的情况下,所述调用模块调用所述发送 模块。
全文摘要
本发明公开了一种基于前/后台任务的通信方法和装置,方法包括设置步骤,设置计数器,用于对后台任务中待处理的消息进行计数;第一判断步骤,判断计数器的计数值是否大于第一阈值;当判断结果为是时,将流控标志置位,将消息延迟第一预定时间后再次尝试发送,执行第一判断步骤;当判断结果为否时,进行到第二判断步骤;第二判断步骤,判断计数器的计数值是否大于第二阈值;当判断结果为否时,将消息发送给后台任务;当判断结果为是时,进行到第三判断步骤;第三判断步骤,判断流控标志是否被置位;当判断结果为是时,将消息延迟第二预定时间后再次尝试发送,执行第一判断步骤;当判断结果为否时,将消息发送给后台任务。本发明优化了CPU的使用。
文档编号G06F9/50GK101303658SQ20081012865
公开日2008年11月12日 申请日期2008年6月18日 优先权日2008年6月18日
发明者石江涛 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1