当前位置: 首页 > 专利查询>微软公司专利>正文

改进的异步编程执行制造技术

技术编号:7786274 阅读:127 留言:0更新日期:2012-09-21 07:13
公开了用于改进运行时间的异步编程执行的一种或多种技术和/或系统。异步编程代码例如在执行计划中可包括多于一个层次等级。展开在异步编程代码的一部分中的相应聚集操作,通过组合异步编程代码的多等级迭代执行的元素以创建单等级迭代执行。以此方式,聚集操作级联到聚集操作的局部逻辑代码。在异步编程代码的展开部分中的线程上下文切换仅在异步操作执行,从而减少了不必要的切换。在编程代码期间抛出的异常可向上传播至该执行的虚拟调用栈顶部。

【技术实现步骤摘要】
用于执行异步编程代码的方法和系统
技术介绍
编程代码可以同步方式写入,同步方式可包括按顺序方式来执行代码。举例而言,可执行第一操作,且第一操作的结果可用作第二操作的输入。这种类型的编程通常容易写,但可能执行起来没有效率(例如,在第一操作的输出用作第二操作的输入的场合,第二操作可能不得不等待相当长的时间让第一操作执行完毕,然后第二操作可以开始执行)。举例而言,当存在长输入/输出调用时,其中结果可能花费长时间返回,在同步编程执行中,代码执行进程线程可变得受阻。在此实例中,当线程受阻而不能继续执行时,编程的继续执行可被停止。通过在单独线程上执行一些异步操作,异步编程可提供编程的多线程执行。因此如果一个线程变得受阻,其可不造成编程的执行受阻。然而,虽然更高效,但异步编程更难写。
技术实现思路
提供本
技术实现思路
以便以简化形式介绍概念的选择,这些概念在下面在具体实施方式中进一步描述。本
技术实现思路
不预期标识所要求保护的主题的关键因素或必要特征,也不预期用来限制所要求保护的主题的范围。传统异步编程模型试图解决执行长运行任务时线程受阻的问题。异步编程可提供在执行某些长输入/输出(I/O)调用(一个或多个)时释放进程执行线程,但其也可由于引入了分发(passingaround)进程执行的异步状态和异步回调代表(callbackdelegate)而使应用设计和编程进程复杂。即,对于不同的异步编程解决方案,仍存在问题。因此,公开了一种或多种技术和/或系统,其中可以实施高效且易于使用的异步编程框架来帮助程序设计员按顺序方式对异步代码编程,类似于传统同步编程。例如可以移除不必要的线程上下文切换,从而减小了上下文线程切换的计算成本,且可提供用户友好界面和操作抽象。另外,在运行时间期间的异常(exception)可以向上传播到虚拟调用栈,例如以可为传统(同步)程序设计员熟知的方式。在改进运行时间异步编程执行的一个实施例中,其中异步编程代码包括多于一个层次等级,能展开在异步编程代码的一部分中的各个聚集操作。在此实施例中,展开可包括将异步编程代码的多等级迭代执行的元素组合为单个等级迭代执行,从而将聚集操作转换为聚集操作的级联的局部逻辑代码。另外,在异步编程代码的展开部分中的线程上下文切换只能在异步操作时进行,由此减少不必要的切换。为了实现前述和相关目的,下文的描述和附图陈述了某些说明性方面和实施方式。这些仅指示其中可采用一个或多个方面的各种方式中的少数方式。当结合附图考虑时,根据下面的详细描述,本公开的其它方面、优点和新颖的特征将变得清楚明白。附图说明图1示出了其中可执行异步代码的一个或多个当前或现有技术的实例实施例。图2示出了其中可执行异步代码的一个或多个当前或现有技术的实例实施例。图3为用于改进运行时间异步编程执行的示例性方法的流程图。图4A和图4B示出了其中可实施本文所述的一个或多个技术的实例实施例。图5示出执行栈布置的实例实施例,其中异常可传播到执行栈顶部。图6A为其中可并行地执行两个或更多操作的实例实施例的流程图。图6B示出了可并行地执行的两个或更多操作的实例伪代码。图7为用于改进运行时间的异步编程执行的系统的示例性实施例的组件图。图8为包括处理器可执行指令的示例性计算机可读介质的图示,所述处理器可执行指令被配置为实施本文所述的规定中的一个或多个。图9示出其中可实施本文所述的规定中的一个或多个的示例性计算环境。具体实施方式现参看附图来描述所要求保护的主题,其中通篇同样的附图标记一般用于指代同样的元件。在下文的描述中,出于解释说明的目的,陈述了许多具体细节以提供对所要求保护的主题的透彻理解。但可显然,所要求保护的主题可在无这些具体细节的情况下来实践。在其它情况下,以方块图的形式示出结构和设备以便于描述所要求保护的主题。图1示出了其中可执行异步代码的一个或多个当前或现有技术的实例实施例100。在此实例实施例100中,在该代码中存在连续的异步,其中异步操作能按顺序进行,使用某些迭代执行。异步编程代码包括具有相关联局部逻辑102的一系列异步操作104、106、108。在此实例100中,对于操作一104读取局部逻辑102A,操作一104能产生结果,包括对局部逻辑102B的输入。依次进行操作二106且然后进行操作三108。在此实例100中,操作104、106、108包括根据编程代码以指定顺序进行的异步操作,从而得到连续的异步。局部逻辑102包括按顺序编程,其中进程线程可在相应逻辑102的开始和末尾处附加和分离。另外,局部逻辑可包括到异步操作104、106、108的某指针,其可在与局部逻辑进程线程异步的另一进程线程上进行。但是,例如相对于局部逻辑102按顺序方式进行这些异步操作,其中操作一104可产生由操作二106使用的结果,而操作二106又可产生由操作三108使用的结果。如在伪代码中所表达的诸如用于同步编程这样的传统编程代码的实例可包括:{//Definesomelocalcontext…result1=operation1.execute(someLocalContext);result2=operation2.execute(result1,someLocalContext);…//Handlesresult2}如在伪代码中所表达的诸如用于异步编程的传统编程代码的实例(例如使用公共语言运行时间(CLR),异步编程模型(APM))可包括:Method1(){…operation1.beginExecute(Callback1,someLocalContext);…}Callback1(AsyncResultar){…result1=operation1.EndExecute();someLocalContext=ar.AsyncState;operation2.BeginExecute(result1,Callback2,someLocalContext);…}Callback2(AsyncResultar){result2=operation2.EndExecute();…}其中对异步操作做出回调,例如在单独进程线程上执行。图2示出了其中可执行异步代码的一个或多个当前或现有技术的实例实施例200。在此实例实施例200中,在该代码中可存在连续的异步的更复杂图示,其中可使用迭代执行来按顺序进行异步操作,且操作可在层次结构中聚集其它操作。这个实例包括局部逻辑202A和第一操作204,然后是局部逻辑202B和第二操作206。在代码的相应局部逻辑部段202A和202B的开始和末尾处,在执行期间,附加和分离210进程线程。举例而言,当存在对返回操作的让步(yield)时,例如在局部逻辑中,分离线程。另外,当操作完成执行时,存在线程附加。这个线程附加/分离210包括在计算上开销很大的进程线程上下文切换。上下文切换消耗中央处理单元(CPU)资源且可由于复杂编码而增添设计成本。在此实例200中,第二异步操作206包括聚集操作,例如,其可包括在第二操作内运行的多个操作的聚集(例如,且并非真实异步操作,而只是到其它操作的指针)。操作二206包括用于异步操作二206的局部逻辑212和异步操作三214、四216和五218的聚集。因此,在连续的异步中,例如,在操本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201210034926.html" title="改进的异步编程执行原文来自X技术">改进的异步编程执行</a>

【技术保护点】

【技术特征摘要】
2011.02.16 US 13/0285521.一种用于执行异步编程代码的基于计算机的方法(300),包括:展开具有一个层次中的多个等级的异步编程代码的一部分中的聚集操作,所述展开包括组合与第一线程相关联的所述层次的第一等级中的第一局部逻辑代码和与第二线程相关联的所述层次的第二等级中的第二局部逻辑代码以及将所述聚集操作转换为包括所述聚集操作的级联局部逻辑代码的顺序操作,其中,所述展开有效地移除了与聚集操作相关联的线程上下文切换并且替换地在所述异步编程代码的展开部分中在异步操作处实施线程上下文切换;以及当在所述层次的第二等级处抛出操作异常时,将该操作异常向上传播到所述层次的第一等级,其中,第一线程和第二线程的调用栈被级联到该操作异常。2.根据权利要求1所述的方法,传播操作异常在运行时间实施。3.根据权利要求1所述的方法,还包括,从所述层次的第三等级向上传播所述操作异常。4.根据权利要求1所述的方法,所述异步编程代码包括以限定顺序执行的一个或多个局部逻辑代码。5.根据权利要求1所述的方法,包括将该操作异常向上传播到执行栈的顶部。6.根据权利要求1所述的方法,所述第二等级在第二线程上运行且所述第一等级在第一线程上运行。7.根据权利要求1所述的方法,包括限制在所述异步编程代码中的操作结果仅为强类型操作结果。8.根据权利要求1所述的方法,包括组合第一操作请求与一个或多个第二操作请求以在一个或多个异步操作中分批执行。9.根据权利要求1所述的方法,包括将来自不同线程的两个相同类型的能分批的操作...

【专利技术属性】
技术研发人员:赵晓绚S史林尼瓦森周翔江逢斌
申请(专利权)人:微软公司
类型:发明
国别省市:

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

1