0

假设线程 A 使用'await' 等待线程 B 上的某些事情完成。当 B 忙于工作负载时,A 被认为已被标记为“暂停点”。A 中的执行流程将继续挂起代码块的“调用者”方法。当 B 完成后,它会通知 A 从暂停点继续。

我的问题是:

  • 为暂停点保留的上下文信息的内容是什么?

  • 上下文信息如何存储?

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

  • A的上下文信息是如何恢复的?(我认为一旦 A 的上下文信息被恢复,A 将从暂停点“自然”恢复)

  • 'async' 和 'await' 分别对编译器有什么影响。换句话说,编译器在幕后做了什么特别的工作。

4

1 回答 1

3

首先,忘记线程。async并且await与线程几乎没有关系,更多的是与重写方法有关,因此您可以更轻松地使用延续传递样式。

我建议您阅读我的async/ awaitintro 帖子,然后跟进MSDN 文档(非常好)。这将回答你所有的问题,除了最后一个问题,Jon Skeet 的 eduasync 博客系列回答得最好。

于 2013-04-01T02:19:59.633 回答