[發明專利]在線性棧上高效恢復協同例程有效
| 申請號: | 201110008477.0 | 申請日: | 2011-01-06 |
| 公開(公告)號: | CN102141937A | 公開(公告)日: | 2011-08-03 |
| 發明(設計)人: | N·M·加夫特;M·托格森;H·J·M·梅杰;N·古斯塔夫松 | 申請(專利權)人: | 微軟公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 上海專利商標事務所有限公司 31100 | 代理人: | 黃嵩泉;高見 |
| 地址: | 美國華*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 線性 高效 恢復 協同 例程 | ||
1.一種系統(100),包括:
處理器(142)和存儲器(144),所述存儲器包括配置成使所述處理器(142)執行以下動作的模塊(106):
在利用固有地不能掛起和恢復協同例程的單個線性機器調用棧的計算機環境中掛起和恢復包括調用方協同例程(110)和被調用協同例程(112)的協同例程,其中
僅響應于檢測到所述被調用協同例程的掛起,所述模塊:
保存先前未保存的所述單個線性機器調用棧的能恢復部分,所述單個線性機器調用棧的所述能恢復部分包括所述調用方協同例程的棧幀、所述被調用協同例程的棧幀以及恢復器的棧幀;
將所述單個線性機器調用棧的所述能恢復部分從所述單個線性機器調用棧移除;
將恢復器的返回地址放到所述單個線性機器調用棧上;以及響應于檢測到所述被調用協同例程的恢復:
僅將所述被調用協同例程的所述棧幀復制到所述單個線性機器調用棧上,而不將所述單個線性機器調用棧的所有所述能恢復部分復制到所述單個線性機器調用棧上。
2.如權利要求1所述的系統,其特征在于,響應于檢測到所述被調用協同例程的恢復,通過將控制返回到放在所述單個線性機器調用棧上的所述恢復器的所述返回地址來將控制返回給所述恢復器,所述恢復器將所述被調用協同例程的所述棧幀放到所述單個線性機器調用棧上。
3.如權利要求1所述的系統,其特征在于,響應于拋出異常,在所述單個線性機器調用棧上所述被調用協同例程的所述棧幀被所述調用方協同例程的所述棧幀代替。
4.如權利要求1所述的系統,其特征在于,通過所述調用方協同例程請求附加信息來發起恢復。
5.如權利要求1所述的系統,其特征在于,通過返回所述調用方協同例程所請求的信息來發起恢復。
6.一種方法(200),包括:
在其中實現線性機器調用棧的軟件開發計算機上執行的編程環境中,其中所述線性機器調用棧固有地不能掛起和恢復協同例程:
響應于接收到從調用者對被調用協同例程的未掛起協同例程調用,不將與所述被調用協同例程相關聯的棧幀從所述線性機器調用棧保存到堆(206);以及
僅響應于檢測到從所述調用者調用的被調用協同例程的首次掛起,將與所述被調用協同例程相關聯的棧幀從所述線性機器調用棧保存到堆(208)。
7.如權利要求6所述的方法,其特征在于,還包括:
響應于檢測到所述被調用協同例程的恢復,從所述堆向所述線性機器棧重構僅葉幀。
8.如權利要求6所述的方法,其特征在于,還包括:
實現高級編程語言的迭代器或實現異步編程。
9.如權利要求6所述的方法,其特征在于,還包括:
響應于所述被調用協同例程返回,用所述調用者的棧幀來代替所述線性機器調用棧上所述被調用協同例程的所述棧幀。
10.如權利要求6所述的方法,其特征在于,還包括:
響應于拋出異常,抓住所述異常,在所述線性機器調用棧上用所述調用者的棧幀來代替所述被調用協同例程的所述棧幀并重新拋出所述異常。
11.一種包括計算機可執行指令的計算機可讀存儲介質,所述指令在被執行時使至少一個處理器(142):
執行對未掛起協同例程的線性機器調用棧處理;
除所述線性機器調用棧處理以外,通過以下操作對被掛起協同例程執行調用棧處理:
將包括所述被掛起協同例程的返回地址的棧幀、包括所述調用者的返回地址的棧幀以及驅動程序例程的棧幀保存到與所述線性機器調用棧分開的數據結構中;
掛起所述調用者;
從所述線性機器調用棧移除所述調用者的所述棧幀和所述被掛起協同例程的所述棧幀;
將恢復器的返回地址放到所述線性機器調用棧上;以及響應于接收到所述被掛起協同例程的恢復:
將所述調用者的所述棧幀復制到所述線性機器調用棧上。
12.如權利要求11所述的計算機可讀存儲介質,其特征在于,還包括在被執行時使所述至少一個處理器執行以下動作的計算機可執行指令:
恢復所述被掛起協同例程,其中所恢復的協同例程返回到所述恢復器,并且所述恢復器將所述調用者的棧幀復制到所述線性機器調用棧上。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于微軟公司,未經微軟公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110008477.0/1.html,轉載請聲明來源鉆瓜專利網。





