我非常认同一图胜千言的说法,因此我也喜欢用图来解释各种技术概念。本文通过图解来说明 .NET 中 async/await 如何工作。async/await 背后的主要思想是,当我们在一个正在进行的 I/O 操作上等待时,调用线程可以被释放出来做其他工作,它提供了很好的线程可重用性。因此,具备更好的可扩展性,与同步/等待方式相比,更少的线程可以处理相同数量的操作。这里的主要作用是进行所谓的 overlapped I/O(在 Windows 环境),它允许异步地将 I/O 操作委托给操作系统,只有在操作完成后,提供的回调才通知调用者结果。这里的主要工作是 I/O 完成端口(IOCP)。I/O 完成端口是 Windows 中异步 I/O 的一种非常有效的机制,只需要一个端口就可以观察大量正在进行的操作。在 .NET 环境下
………………………………