内容推荐 本书全面讲解C#并发编程技术,侧重于.NET平台上较新、较实用的方法。新版内容全面更新,涉及异步编程基础、互操作、集合、常见场景及其处理技巧等,另外新增了关于异步流的章节。全书分为14章:第1章概览几种并发编程技术,包括异步编程、并行编程、响应式编程、数据流等;第2~6章对这些技术进行详细介绍;第7~13章深入探讨这些技术,内容包括测试技巧、互操作、取消、函数式面向对象编程、同步、调度等;第14章涉及并发编程中的一些常见场景,并配有对应的解决方案。全书共包含近90个配有源代码的实例,可用于各种应用程序的开发。 本书适合具有.NET基础并希望学习现代并发编程方法的软件开发人员阅读。 作者简介 斯蒂芬·克利里(Stephen Cleary),C# MVP,在ARM固件领域以及Azure服务平台等方面有着丰富的经验。他一直投身于研发开源技术,最初致力于Boost C++库,而后发布了一些自行编写的库和工具。 目录 第2版赞誉 前言 第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 3.2 异步流和IEnumerable 3.3 异步流和Task> 3.4 异步流和IObservable 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 旧版平台支持 附录B 识别和诠释异步模式 关于作者 关于封面 |