[发明专利]控制异步调用的返回的方法和装置有效
申请号: | 201210091156.6 | 申请日: | 2012-03-30 |
公开(公告)号: | CN103365707A | 公开(公告)日: | 2013-10-23 |
发明(设计)人: | 王华红;贺顾一;郑超;王强;钟思奇;康涛;朱贤君 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京市中咨律师事务所 11247 | 代理人: | 周良玉;于静 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 控制 异步 调用 返回 方法 装置 | ||
技术领域
本发明涉及程序中的异步调用,更具体而言,涉及对异步调用进行控制的方法和装置。
背景技术
在许多程序中都会应用到异步调用。在进行异步调用时,调用方的主线程不需要等待调用函数的执行,而是继续执行接下来的代码。一旦被调用方将调用函数执行完毕,就会反过来调用原来的调用方来返回结果,这称为回调。相应地,主线程通过回调函数获得执行结果。然而,异步调用的一个问题是调用的返回时间无法预知。因此,在存在多个异步调用的情况下,相应的回调函数的执行顺序无法预先确定。这就为程序的调试和除错带来了很大的困难。
图1示出包含异步调用的程序的执行流程。在图1的例子中,主程序依次执行两个异步调用AS Call 1和AS Call 2,然后继续执行其他函数和功能,例如同步调用函数SC1,SC2等。对于这两个异步调用函数,开发人员可能预期依次获得这两个调用的返回结果,例如在SC1和SC2之间获得AS Call1的回调,在SC2之后获得AS Call2的回调。然而,取决于被调用方对AS Call 1和AS Call 2的执行情况,对应的回调函数的执行顺序有可能发生变化。例如,在特定情况下,AS Call 2的返回时间可能早于AS Call1(如图中虚线所示),这种情况下主程序的执行结果有可能不同于预期的依次返回的情况,从而发生错误。由于这样的错误仅仅在异步调用的特定返回顺序下出现,因此难以通过常规的程序调试来发现。
由于无法控制异步调用的返回时间,为了进行除错,开发人员往往需要将程序运行大量次数,以期从中再现导致错误的异步调用返回顺序。然而,这样的方式相当耗时,并且仍然无法确保除错的效果。
在另一种方案中,开发人员从程序中提取出与异步调用相关的逻辑,并对其进行测试。假定程序中有5处异步调用,其中一种特定的返回顺序会导致程序出现错误,那么开发人员需要耗费大量时间来排列所有可能的返回顺序,并从中找出导致错误的一种顺序。并且,由于各种程序框架的快速发展,从复杂的程序功能块中提取出单个逻辑也非常困难。
因此,希望能够对异步调用的返回进行控制,从而便于程序的调试和除错。
发明内容
鉴于以上提出的问题,提出本发明,旨在提供一种方案,能够对异步调用的返回进行控制。
根据本发明一个实施例,提供一种控制程序中的异步调用的返回的方法,包括:检测程序中的至少一个异步调用;响应于检测到程序中设置的断点,在所述断点处中断所述程序的执行;获取与所述至少一个异步调用相对应的至少一个回调;根据用户选择将至少一个回调分别插入到程序的指定位置;以及响应于所述至少一个回调被插入到程序中,从所述断点处继续执行所述程序。
根据本发明另一实施例,提供一种控制程序中的异步调用的返回的装置,包括:检测单元,配置为检测程序中的至少一个异步调用;中断单元,配置为响应于检测到程序中设置的断点,在所述断点处中断所述程序的执行;回调获取单元,配置为获取与所述至少一个异步调用相对应的至少一个回调;回调插入单元,配置为根据用户选择将至少一个回调分别插入到程序的指定位置;以及执行单元,配置为响应于所述至少一个回调被插入到程序中,从所述断点处继续执行所述程序。
利用本发明实施例的方法和装置,开发人员能够在程序调试阶段根据需要对异步调用的返回进行,从而更好地对程序进行测试和除错。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出包含异步调用的程序的执行流程;
图2示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图3示出根据本发明一个实施例的控制异步调用的返回的方法;以及
图4示出根据本发明一个实施例的控制异步调用返回的装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210091156.6/2.html,转载请声明来源钻瓜专利网。