[发明专利]在线性栈上高效恢复协同例程有效
申请号: | 201110008477.0 | 申请日: | 2011-01-06 |
公开(公告)号: | CN102141937A | 公开(公告)日: | 2011-08-03 |
发明(设计)人: | N·M·加夫特;M·托格森;H·J·M·梅杰;N·古斯塔夫松 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 黄嵩泉;高见 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 未挂起协同例程由机器调用栈机制来处理,其中该栈随着作出递归调用和从递归调用返回而增长和收缩。然而,在协同例程挂起时,执行附加的调用栈处理。发出挂起消息,并且调用栈的整个能恢复部分被移除并被复制到堆。将控制返回给驱动程序方法(恢复器)的帧被复制到调用栈,从而协同例程的恢复不会递归地重新激活整个调用栈。相反,恢复器仅重新激活被称为叶帧的最顶部或最当前帧。在协同例程挂起时,其不返回到其调用者,而是返回到已重新激活它的恢复器。 | ||
搜索关键词: | 线性 高效 恢复 协同 例程 | ||
【主权项】:
一种系统(100),包括:处理器(142)和存储器(144),所述存储器包括配置成使所述处理器(142)执行以下动作的模块(106):在利用固有地不能挂起和恢复协同例程的单个线性机器调用栈的计算机环境中挂起和恢复包括调用方协同例程(110)和被调用协同例程(112)的协同例程,其中仅响应于检测到所述被调用协同例程的挂起,所述模块:保存先前未保存的所述单个线性机器调用栈的能恢复部分,所述单个线性机器调用栈的所述能恢复部分包括所述调用方协同例程的栈帧、所述被调用协同例程的栈帧以及恢复器的栈帧;将所述单个线性机器调用栈的所述能恢复部分从所述单个线性机器调用栈移除;将恢复器的返回地址放到所述单个线性机器调用栈上;以及响应于检测到所述被调用协同例程的恢复:仅将所述被调用协同例程的所述栈帧复制到所述单个线性机器调用栈上,而不将所述单个线性机器调用栈的所有所述能恢复部分复制到所述单个线性机器调用栈上。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201110008477.0/,转载请声明来源钻瓜专利网。