万本电子书0元读

万本电子书0元读

顶部广告

C#并发编程经典实例(第2版)电子书

如今的用户对响应式界面的期望越来越高,发人员不得不努力赋予应用程序越来越强的能力,并发编程兼顾了这两大趋势。对现代应用程序来说,并发编程迅速地成为了不可或缺的需求。然而,众多发人员依然认为并发编程富有挑战。 如果你曾在并发编程十分复杂的年代里受挫,那么本书能帮助你重拾勇气。或许我们永远无法将并发编程形容为“小菜一碟”,但借助现代程序库以及.NET和C# 8.0的语言特性,你一定不会再如过去那般举步维艰。你将通过本书掌握以下内容。

售       价:¥

纸质售价:¥59.20购买纸书

145人正在读 | 1人评论 6.2

作       者:[美] 斯蒂芬·克利里(Stephen Cleary)

出  版  社:人民邮电出版社有限公司

出版时间:2020-11-01

字       数:19.0万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(1条)
  • 读书简介
  • 目录
  • 累计评论(1条)
本书全面讲解C#并发编程技术,侧重于.NET平台上较新、较实用的方法。新版内容全面更新,涉及异步编程基础、互操作、集合、常见场景及其处理技巧等,另外新增了关于异步流的章节。全书分为14章:第1章概览几种并发编程技术,包括异步编程、并行编程、响应式编程、数据流等;第2~6章对这些技术行详细介绍;第7~13章深探讨这些技术,内容包括测试技巧、互操作、取消、函数式面向对象编程、同步、调度等;第14章涉及并发编程中的一些常见场景,并配有对应的解决方案。全书共包含近90个配有源代码的实例,可用于各种应用程序的发。<br/>【推荐语】<br/>如今的用户对响应式界面的期望越来越高,发人员不得不努力赋予应用程序越来越强的能力,并发编程兼顾了这两大趋势。对现代应用程序来说,并发编程迅速地成为了不可或缺的需求。然而,众多发人员依然认为并发编程富有挑战。 如果你曾在并发编程十分复杂的年代里受挫,那么本书能帮助你重拾勇气。或许我们永远无法将并发编程形容为“小菜一碟”,但借助现代程序库以及.NET和C# 8.0的语言特性,你一定不会再如过去那般举步维艰。你将通过本书掌握以下内容。 - 面向异步编程的async和await - 利用异步流让代码更强 - 利用.NET TPL探索并行编程 - 利用.NET TPL数据流库创建数据流管道 - 了解基于LINQ的System.Reactive - 利用线程安全且不可变的集合 - 使用并发代码行单元测试 - 让线程池为己所用 - 探索如何整合并发方法 - 并发代码中的取消功能支持 - 深理解支持异步的面向对象编程 - 辨识旧式异步代码,并为其编写适配器 【赞誉】 “计算机领域的下一件大事就是普及大型并发编程。发人员已然拥有了前所未有的力量,但并发编程对多数人来说依旧富有挑战。斯蒂芬将我们的目光聚焦到这个问题上,并通过易于理解又十分完备的内容,帮助我们更好地理解并发编程、线程、响应式编程模型、并行编程,以及其他相关知识。” ——Scott Hanselman,微软公司首席项目经理,负责ASP.NET和Azure Web工具 “凭借涵盖技术之广泛,操作指南之实用,这本书无愧学习现代.NET并发编程的理想之选。” ——Jon Skeet,谷歌公司高级软件工程师 “斯蒂芬·克利里已成为C#异步编程和并发编程领域的重要专家。这本书清晰、简练地阐述了这些技术的关键切和相关原则,能够帮助发人员快速门,并取得成功。” ——Stephen Toub,微软公司首席架构师<br/>【作者】<br/>斯蒂芬·克利里(Stephen Cleary),C# MVP,在ARM固件领域以及Azure服务平台等方面有着丰富的经验。他一直投身于研发源技术,初致力于Boost C 库,而后发布了一些自行编写的库和工具。<br/>
目录展开

版权声明

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

关于作者

关于封面

看完了

累计评论(1条) 1个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部