阅读此书的约定
斜体字: 表示新定义的术语、URL、邮件地址、文件名、文件扩展名。
下面的图标表示:小贴士、建议或者注释。
第一章 引言
首先,让我们先避开细节、从较高层次介绍一下C# 5.0中的async功能,看看它对你来说到底意味着什么。
异步编程
什么样的代码是异步的呢?如果程序开始执行耗时操作后,程序不会等待耗时操作结束才往下继续执行,这样的代码就是异步的。如果程序一直要等待耗时操作结束后才能继续往下执行,这样的代码就是阻塞代码(blocking code)。
常见的耗时操作包括下列情况:
- 网络请求
- 磁盘访问
- 故意延迟等待一段时间
对于我们通常使用的编程语言来说,程序都在操作系统的线程上执行。如果当执行耗时操作时,启动了耗时操作的线程(称之为启动线程)之后,就继续去做其它事情,这样的代码就是异步的;如果启动线程什么事也不做(被阻塞了),这样的代码就是阻塞的。所以说,区分异步和阻塞代码的重点的就在于这个启动线程是否等待耗时操作执行完才去做接下来的工作。
![]() |
当然,解决等待耗时操作问题的第三种策略是:轮询(polling)——你可以反复询问任务是否已经结束。 但通常来说不推荐这种方法,因为它只适用于操作时长较短的情况。 | </