如今的用户对响应式界面的期望越来越高,发人员不得不努力赋予应用程序越来越强的能力,并发编程兼顾了这两大趋势。对现代应用程序来说,并发编程迅速地成为了不可或缺的需求。然而,众多发人员依然认为并发编程富有挑战。 如果你曾在并发编程十分复杂的年代里受挫,那么本书能帮助你重拾勇气。或许我们永远无法将并发编程形容为“小菜一碟”,但借助现代程序库以及.NET和C# 8.0的语言特性,你一定不会再如过去那般举步维艰。你将通过本书掌握以下内容。
售 价:¥
纸质售价:¥53.00购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
版权声明
O'Reilly Media, Inc. 介绍
业界评论
第2版赞誉
前言
读者对象
写作初衷
内容结构
在线资源
排版约定
使用示例代码
O'Reilly在线学习平台(O'Reilly Online Learning)
联系我们
致谢
更多信息
第 1 章 并发概览
1.1 并发入门
1.2 异步编程
1.3 并行编程
1.4 响应式编程
1.5 数据流
1.6 多线程编程
1.7 并发应用程序集合
1.8 现代化设计
1.9 技术要点小结
第 2 章 异步编程基础
2.1 暂停一段时间
问题
解决方案
讨论
参阅
2.2 返回已完成的任务
问题
解决方案
讨论
参阅
2.3 报告进度
问题
解决方案
讨论
参阅
2.4 等待一组任务完成
问题
解决方案
讨论
参阅
2.5 等待任意任务完成
问题
解决方案
讨论
参阅
2.6 在任务完成时处理它们
问题
解决方案
讨论
参阅
2.7 避免延续的上下文
问题
解决方案
讨论
参阅
2.8 async Task方法的异常处理
问题
解决方案
讨论
参阅
2.9 async void方法的异常处理
问题
解决方案
讨论
参阅
2.10 创建ValueTask
问题
解决方案
讨论
参阅
2.11 使用ValueTask
问题
解决方案
讨论
参阅
第 3 章 异步流
3.1 异步流和Task<T>
3.2 异步流和IEnumerable<T>
3.3 异步流和Task<IEnumerable<T>>
3.4 异步流和IObservable<T>
小结
3.5 创建异步流
问题
解决方案
讨论
参阅
3.6 消耗异步流
问题
解决方案
讨论
参阅
3.7 对异步流使用LINQ
问题
解决方案
讨论
参阅
3.8 异步流及其取消操作
问题
解决方案
讨论
参阅
第 4 章 并行编程基础
4.1 并行处理
问题
解决方案
讨论
参阅
4.2 并行聚合
问题
解决方案
讨论
参阅
4.3 并行调用
问题
解决方案
讨论
参阅
4.4 动态并行
问题
解决方案
讨论
参阅
4.5 PLINQ
问题
解决方案
讨论
参阅
第 5 章 数据流基础
5.1 关联的块
问题
解决方案
讨论
参阅
5.2 传播错误
问题
解决方案
讨论
参阅
5.3 块的解耦
问题
解决方案
讨论
参阅
5.4 块的节流
问题
解决方案
讨论
参阅
5.5 块的并行处理
问题
解决方案
讨论
参阅
5.6 创建自定义块
问题
解决方案
讨论
参阅
第 6 章 System.Reactive基础
6.1 转换.NET事件
问题
解决方案
讨论
参阅
6.2 向上下文发送通知
问题
解决方案
讨论
参阅
6.3 使用窗口和缓冲来分组事件数据
问题
解决方案
讨论
参阅
6.4 通过节流和采样控制事件流
问题
解决方案
讨论
参阅
6.5 超时
问题
解决方案
讨论
参阅
第 7 章 测试
7.1 对async方法进行单元测试
问题
解决方案
讨论
参阅
7.2 对预期失败的async方法进行单元测试
问题
解决方案
讨论
参阅
7.3 对async void方法进行单元测试
问题
解决方案
讨论
参阅
7.4 对数据流网格进行单元测试
问题
解决方案
讨论
参阅
7.5 对System.Reactive可观察对象进行单元测试
问题
解决方案
讨论
参阅
7.6 通过伪造调度对System.Reactive可观察对象进行单元测试
问题
解决方案
讨论
参阅
第 8 章 互操作
8.1 异步包装“已完成”事件和异步方法
问题
解决方案
讨论
参阅
8.2 异步包装Begin方法和End方法
问题
解决方案
讨论
参阅
8.3 异步包装任意对象
问题
解决方案
讨论
参阅
8.4 异步包装并行代码
问题
解决方案
讨论
参阅
8.5 异步包装System.Reactive可观察对象
问题
解决方案
讨论
参阅
8.6 用于异步代码的System.Reactive可观察包装器
问题
解决方案
讨论
参阅
8.7 异步流与数据流网格
问题
解决方案
讨论
参阅
8.8 System.Reactive可观察对象和数据流网格
问题
解决方案
讨论
参阅
8.9 将System.Reactive可观察对象转换为异步流
问题
解决方案
讨论
参阅
第 9 章 集合
9.1 不可变的栈和队列
问题
解决方案
讨论
参阅
9.2 不可变列表
问题
解决方案
讨论
参阅
9.3 不可变set
问题
解决方案
讨论
参阅
9.4 不可变字典
问题
解决方案
讨论
参阅
9.5 线程安全的字典
问题
解决方案
讨论
参阅
9.6 阻塞队列
问题
解决方案
讨论
参阅
9.7 阻塞栈和阻塞背包
问题
解决方案
讨论
参阅
9.8 异步队列
问题
解决方案
讨论
参阅
9.9 节流队列
问题
解决方案
讨论
参阅
9.10 采样队列
问题
解决方案
讨论
参阅
9.11 异步栈和异步背包
问题
解决方案
讨论
参阅
9.12 阻塞异步队列
问题
解决方案
讨论
参阅
第 10 章 取消
10.1 发起取消请求
问题
解决方案
讨论
参阅
10.2 通过轮询来响应取消
问题
解决方案
讨论
参阅
10.3 因超时而取消
问题
解决方案
讨论
参阅
10.4 取消async代码
问题
解决方案
讨论
参阅
10.5 取消并行代码
问题
解决方案
讨论
参阅
10.6 取消System.Reactive代码
问题
解决方案
讨论
参阅
10.7 取消数据流网格
问题
解决方案
讨论
参阅
10.8 注入取消请求
问题
解决方案
讨论
参阅
10.9 与其他取消系统互操作
问题
解决方案
讨论
参阅
第 11 章 函数式面向对象编程
11.1 异步接口及继承
问题
解决方案
讨论
参阅
11.2 异步构造:工厂
问题
解决方案
讨论
参阅
11.3 异步构造:异步初始化模式
问题
解决方案
讨论
参阅
11.4 异步属性
问题
解决方案
讨论
参阅
11.5 异步事件
问题
解决方案
讨论
参阅
11.6 异步丢弃
问题
解决方案
讨论
参阅
第 12 章 同步
12.1 阻塞锁
问题
解决方案
讨论
参阅
12.2 异步锁
问题
解决方案
讨论
参阅
12.3 阻塞信号
问题
解决方案
讨论
参阅
12.4 异步信号
问题
解决方案
讨论
参阅
12.5 节流
问题
解决方案
讨论
参阅
第 13 章 调度
13.1 将工作调度到线程池
问题
解决方案
讨论
参阅
13.2 通过任务调度器执行代码
问题
解决方案
讨论
参阅
13.3 调度并行代码
问题
解决方案
讨论
参阅
13.4 使用调度器实现数据流同步
问题
解决方案
讨论
参阅
第 14 章 场景
14.1 初始化共享资源
问题
解决方案
讨论
参阅
14.2 System.Reactive延迟计算
问题
解决方案
讨论
参阅
14.3 异步数据绑定
问题
解决方案
讨论
参阅
14.4 隐式状态
问题
解决方案
讨论
参阅
14.5 相同的同步代码和异步代码
问题
解决方案
讨论
参阅
14.6 通过数据流网格实现轨道式编程
问题
解决方案
讨论
参阅
14.7 节流进度更新
问题
解决方案
讨论
参阅
附录 A 旧版平台支持
旧版平台对async的支持
旧版平台对TPL数据流的支持
旧版平台对System.Reactive的支持
附录 B 识别和诠释异步模式
TAP
APM
EAP
CPS
自定义异步模式
ISynchronizeInvoke
关于作者
关于封面
看完了
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜