因为论坛不适合写长篇,没法点击目录跳转。发在语雀上了。
《并发编程从0到0.1》
这里复制一下TOC
串行
并发
并行
并发 vs 并行
多线程
异步编程
Thread Marshaling
ExecutionContext
为什么需要 ExecutionContext
ExecutionContext 是什么
ExecutionContext 的流动含义
ExecutionContext 什么时候会流动
流动ExecutionContext 和使用 SynchronizationContext 区别
如何适用于async/await
是否可以阻止 ExecutionContext 流动
ExecutionContext 是否流动 SynchronizationContext
SynchronizationContext
SynchronizationContext 是什么
什么时候要用 SynchronizationContext
SynchronizationContext 实现
SynchronizationContext 用法
SynchronizationContext 的捕获
TaskScheduler
什么是TaskScheduler?
TaskScheduler 用法
Task 底层的调度机制 TaskScheduler
ThreadPoolTaskScheduler 是默认机制
SynchronizationContextTaskScheduler
SynchronizationContext和TaskScheduler是如何与await关联起来的呢?
ConfigureAwait(false)
ConfigureAwait(false)不能保证回调不会在原始上下文中运行
能用SynchronizationContext.SetSynchronizationContext来避免使用ConfigureAwait(false)
async/await、等待者、构建器、可等待的对象、状态机之间关系
Task-Like
等待者:Awaiter
构建器:Builder
ETTask
先看一下Task
在控制台应用程序中
在富文本应用程序中
ET为什么要用单线程?
ETTask 的 Hello World 反编译代码
ETTaskCompletionSource 为 awaiter
ETAsyncTaskMethodBuilder 构建器