5.0 基于任务的异步模式

基于任务的异步模式

1、 I/O绑定与CPU绑定

I/O绑定:代码“等待”某些内容,例如:数据库中的数据,就是I/O绑定;async中返回一个Task或者Task<T>。

CPU绑定:代码执行开销巨大的计算,就是CPU绑定;等待使用Task.Run在后台启动的操作。

2、 异步模型核心

异步模型的核心是Task和Task<T>,他们受async和await的操作。异步方法旨在成为非阻止的操作,它不会阻塞当前线程。

3、 关于异步方法参数

异步方法无法声明in、ref或 out参数,但可以调用包含此类参数的方法。 同样,异步方法无法通过引用返回值,但可以调用包含 ref 返回值的方法。

4、异步方法的返回类型

返回 void 的异步方法的调用方无法捕获从该方法引发的异常,且此类未经处理的异常可能会导致应用程序故障。 如果返回 TaskTask<TResult> 的方法引发异常,则该异常存储在返回的任务中。 等待任务时,将重新引发异常。

5、取消任务

已经开始执行的任务无法取消, 但是可以通过判断cancelSource.Token.IsCancellationRequested来控制代码是否结束

用于实现协作取消模型的常规模式是:

原文地址:https://www.cnblogs.com/fat-girl/p/14760376.html