[发明专利]用于执行异步编程代码的方法和系统有效
申请号: | 201210034926.3 | 申请日: | 2012-02-16 |
公开(公告)号: | CN102681843B | 公开(公告)日: | 2017-06-13 |
发明(设计)人: | 赵晓绚;S.史林尼瓦森;周翔;江逢斌 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 中国专利代理(香港)有限公司72001 | 代理人: | 黄维,刘鹏 |
地址: | 美国华*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 改进 异步 编程 执行 | ||
1.一种用于执行异步编程代码的基于计算机的方法(300),包括:
展开具有一个层次中的多个等级的异步编程代码的一部分中的聚集操作,所述展开包括组合与第一线程相关联的所述层次的第一等级中的第一局部逻辑代码和与第二线程相关联的所述层次的第二等级中的第二局部逻辑代码以及将所述聚集操作转换为包括所述聚集操作的级联局部逻辑代码的顺序操作,其中,所述展开有效地移除了与聚集操作相关联的线程上下文切换并且替换地在所述异步编程代码的展开部分中在异步操作处实施线程上下文切换;以及
当在所述层次的第二等级处抛出操作异常时,将该操作异常向上传播到所述层次的第一等级,其中,第一线程和第二线程的调用栈被级联到该操作异常。
2.根据权利要求1所述的方法,传播操作异常在运行时间实施。
3.根据权利要求1所述的方法,还包括,从所述层次的第三等级向上传播所述操作异常。
4.根据权利要求1所述的方法,所述异步编程代码包括以限定顺序执行的一个或多个局部逻辑代码。
5.根据权利要求1所述的方法,包括将该操作异常向上传播到执行栈的顶部。
6.根据权利要求1所述的方法,所述第二等级在第二线程上运行且所述第一等级在第一线程上运行。
7.根据权利要求1所述的方法,包括限制在所述异步编程代码中的操作结果仅为强类型操作结果。
8.根据权利要求1所述的方法,包括组合第一操作请求与一个或多个第二操作请求以在一个或多个异步操作中分批执行。
9.根据权利要求1所述的方法,包括将来自不同线程的两个相同类型的能分批的操作分批为批调用。
10.根据权利要求1所述的方法,包括并行地执行在所述异步编程代码中的两个或更多操作。
11.一种用于执行异步编程代码的系统(700),包括:
基于计算机的处理器(702),其被配置为处理所述系统的数据;
操作展开组件(704),其可操作地与所述处理器耦合且被配置为展开具有一个层次中的多个等级的异步编程代码的一部分中的聚集操作,所述展开包括组合与第一线程相关联的所述层次的第一等级中的第一局部逻辑代码和与第二线程相关联的所述层次的第二等级中的第二局部逻辑代码以及将所述聚集操作转换为包括所述聚集操作的级联局部逻辑代码的顺序操作,其中,所述展开有效地移除了与聚集操作相关联的线程上下文切换并且替换地在所述异步编程代码的展开部分中在异步操作处实施线程上下文切换;
第一异常传播组件,其被配置为当在所述层次的第二等级处抛出操作异常时,将该操作异常向上传播到所述层次的第一等级,并且将第一线程和第二线程的调用栈级联到该操作异常;以及
操作计数器,其指示操作是否已经在所述层次的相应等级完成。
12.根据权利要求11所述的系统,还包括第二异常传播组件,其被配置为将操作异常向上传播到执行栈的顶部。
13.根据权利要求11所述的系统,还包括分批组件,其被配置为组合第一操作请求与一个或多个第二操作请求以在一个或多个异步操作中分批执行。
14.根据权利要求11所述的系统,还包括block-on-yield操作符,用于并行执行两个或更多不相关的操作。
15.根据权利要求11所述的系统,还包括并行操作组件,其被配置为提供并行地执行在所述异步编程代码中的两个或更多操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210034926.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:信息上报与下载的方法及系统
- 下一篇:图像形成设备