Visual Studio 任务 Window - 等待与阻塞任务

Visual Studio Task Window - awaiting vs blocked Tasks

在任务 Window 中,调试时,状态为“已阻止”与“正在等待”的任务有何区别?

我正在尝试通过数千个任务(计划的、等待的、阻塞的)来理解“错误版本”的内存转储,并且 Microsoft 文档似乎没有提供阻塞状态和等待状态之间的任何区别,据我了解。

摘自https://docs.microsoft.com/en-us/visualstudio/debugger/using-the-tasks-window?view=vs-2019

An awaiting or blocked task is one that is blocked because it is waiting on an event to be signaled, a lock to be released, or another task to finish.

我将在深入研究代码的同时关注同步机制,看看是否能找到差异和解释。

同时,我以为有人可能已经知道了,我没有找到任何类似的问题。谢谢!

您引用的 Microsoft 文档非常清楚地解释了“被阻止”:

https://docs.microsoft.com/en-us/visualstudio/debugger/using-the-tasks-window

A blocked task is one that is blocked because it is waiting on an event to be signaled or a lock to be released

这是“经典阻塞I/O”,类似于 C 语言“read()”的行为。

另一方面,“等待”意味着 async/await

这是一篇关于该主题的精彩文章:Asynchronous programming