笔记整理(原资源网址): https://www.bilibili.com/video/BV1Zf4y117fs?p=12
Task
Thread 的问题
线程(Thread)是用来创建并发(concurrent)的一种低级别工具,它有一些限制,尤其是:
虽然开始线程的时候可以方便的传入数据,但是当 Join 的时候,很难从线程获得返回值。
可能需要设置一些共享字段。
如果操作抛出异常,捕获和传播该异常都很麻烦。
无法告诉线程在结束时开始做另外的工作,你必须进行 Join 操作(在进程中阻塞当前的线程)
很难使用较小的并发来组建大型的并发,导致了对手动同步的更大依赖以及随之而来的问题
Task 类
Task 类可以很好的解决上述问题
Task 是一个相对高级的抽象:它代表了一个并发操作(concurrent)
该操作可能由 Thread 支持,或不由 Thread 支持
Task 是可组合的(可使用 Continuation 把它们串成链)
Task 可以使用线程池来减少启动延迟
使用 TaskCompletionSource,Task 可以利用回调的方式,在等待 I/O-bound 操作时完全避免使用线程。
Ta