第 2版赞誉 ix
前言 xi
第 1章 并发概览 1
1.1 并发入门 1
1.2 异步编程 3
1.3 并行编程 7
1.4 响应式编程 10
1.5 数据流 12
1.6 多线程编程 14
1.7 并发应用程序集合 14
1.8 现代化设计 15
1.9 技术要点小结 15
第 2章 异步编程基础 16
2.1 暂停一段时间 16
2.2 返回已完成的任务 18
2.3 报告进度 20
2.4 等待一组任务完成 22
2.5 等待任意任务完成 24
2.6 在任务完成时处理它们 25
2.7 避免延续的上下文 28
2.8 async Task方法的异常处理 29
2.9 async void方法的异常处理 31
2.10 创建ValueTask 33
2.11 使用ValueTask 34
第3章 异步流 37
3.1 异步流和Task 37
3.2 异步流和IEnumerable 37
3.3 异步流和Task> 38
3.4 异步流和IObservable 38
3.5 创建异步流 40
3.6 消耗异步流 42
3.7 对异步流使用LINQ 44
3.8 异步流及其取消操作 46
第4章 并行编程基础 49
4.1 并行处理 49
4.2 并行聚合 51
4.3 并行调用 52
4.4 动态并行 53
4.5 PLINQ 55
第5章 数据流基础 57
5.1 关联的块 57
5.2 传播错误 59
5.3 块的解耦 60
5.4 块的节流 61
5.5 块的并行处理 62
5.6 创建自定义块 63
第6章 System.Reactive 基础 65
6.1 转换.NET事件 65
6.2 向上下文发送通知 68
6.3 使用窗口和缓冲来分组事件数据 70
6.4 通过节流和采样控制事件流 72
6.5 超时 74
第7章 测试 77
7.1 对async方法进行单元测试 78
7.2 对预期失败的async方法进行单元测试 80
7.3 对async void方法进行单元测试 82
7.4 对数据流网格进行单元测试 83
7.5 对System.Reactive可观察对象进行单元测试 84
7.6 通过伪造调度对System.Reactive可观察对象进行单元测试 86
第8章 互操作 90
8.1 异步包装“已完成”事件和异步方法 90
8.2 异步包装Begin方法和End方法 92
8.3 异步包装任意对象 93
8.4 异步包装并行代码 94
8.5 异步包装System.Reactive可观察对象 95
8.6 用于异步代码的System.Reactive可观察包装器 96
8.7 异步流与数据流网格 98
8.8 System.Reactive可观察对象和数据流网格 100
8.9 将System.Reactive可观察对象转换为异步流 101
第9章 集合 104
9.1 不可变的栈和队列 105
9.2 不可变列表 108
9.3 不可变set 109
9.4 不可变字典 111
9.5 线程安全的字典 113
9.6 阻塞队列 115
9.7 阻塞栈和阻塞背包 116
9.8 异步队列 117
9.9 节流队列 120
9.10 采样队列 122
9.11 异步栈和异步背包 124
9.12 阻塞异步队列 125
第 10章 取消 130
10.1 发起取消请求 131
10.2 通过轮询来响应取消 133
10.3 因超时而取消 135
10.4 取消async代码 136
10.5 取消并行代码 137
10.6 取消System.Reactive代码 138
10.7 取消数据流网格 140
10.8 注入取消请求 141
10.9 与其他取消系统互操作 143
第 11章 函数式面向对象编程 145
11.1 异步接口及继承 145
11.2 异步构造:工厂 147
11.3 异步构造:异步初始化模式 149
11.4 异步属性 152
11.5 异步事件 154
11.6 异步丢弃 156
第 12章 同步 160
12.1 阻塞锁 164
12.2 异步锁 166
12.3 阻塞信号 168
12.4 异步信号 169
12.5 节流 170
第 13章 调度 173
13.1 将工作调度到线程池 173
13.2 通过任务调度器执行代码 174
13.3 调度并行代码 177
13.4 使用调度器实现数据流同步 177
第 14章 场景 179
14.1 初始化共享资源 179
14.2 System.Reactive延迟计算 182
14.3 异步数据绑定 183
14.4 隐式状态 186
14.5 相同的同步代码和异步代码 188
14.6 通过数据流网格实现轨道式编程 190
14.7 节流进度更新 191
附录A 旧版平台支持 197
附录B 识别和诠释异步模式 201
关于作者 208
关于封面 208