2013-04-01 31 views
0

假設線程A使用'await'等待線程B上的某些內容完成。當B忙於工作負載時,A被認爲已標記爲'暫停點'。並且A中的執行流程將繼續使用暫停代碼塊的「調用者」方法。 B完成後,它會通知A從暫停點繼續。await/async如何工作?

我的問題是:

  • 什麼是保持懸掛點上下文信息的內容?

  • 如何存儲上下文信息?

  • B如何通知A關於它的完成?

  • 如何恢復A的上下文信息? (我認爲一旦A的上下文信息恢復,A將自然地從暫停點恢復)

  • 分別對編譯器的'async'和'await'有什麼影響。換句話說,編譯器在幕後做了什麼特別的工作。

回答

3

首先,忘記線程。 asyncawait與線程和處理重寫方法很少有關,因此您可以更輕鬆地使用延續傳遞樣式。

我建議您閱讀我的async/await intro post,然後跟進MSDN documentation(這很不錯)。這將回答除最後一個問題以外的所有問題,最好通過Jon Skeet's eduasync blog series回答。

+0

感謝您參考材料,由於時間限制,迄今爲止我只閱讀了一些材料。我會花一些時間閱讀鏈接。 – smwikipedia