编辑推荐
并发编程在响应式和可扩展的应用开发中得到了日益广泛的应用。但并发编程的难度曾经非常大,令众多开发人员望而却步。今天,很多更高层抽象的现代程序库的出现,大大降低了并发编程的难度。本书使用.NET 4.5和C# 5.0中的语言特性,展示并行处理和异步编程技术。
《C#并发编程经典实例》既是一本入门指导书,也是一本快捷参考书,它示例丰富、结构独特,70多个源代码示例,完整的“问题-解决方案-讨论”模式,逐渐深入又自成一体。你可以循序渐进地学习本书内容,也可以直接查阅对应的示例,迅速解决手头的问题。
内容简介
《图灵程序设计丛书:C#并发编程经典实例》全面讲解C#并发编程技术,侧重于.NET平台上较新、较实用的方法。全书分为几大部分:首先介绍几种并发编程技术,包括异步编程、并行编程、TPL数据流、响应式编程;然后阐述一些重要的知识点,包括测试技巧、互操作、取消并发、函数式编程与OOP、同步、调度;结尾介绍了几个实用技巧。全书共包含70多个有配套源码的实用方法,可用于服务器程序、桌面程序和移动应用的开发。
《图灵程序设计丛书:C#并发编程经典实例》适合具有.NET基础,希望学习全新并发编程技术的开发人员阅读。
作者简介
Stephen Cleary,C# MVP,知名软件开发人员,在C#、C++、JavaScript等方面均有丰富的经验。1998年起成为专业软件开发人员,涉猎广泛,从ARM固件到Azure样样精通。他从刚开始的Boost C++库开始就在为开源软件做贡献,并且发布了几个他自己的库和工具。Stephen喜欢演讲和写作,在其个人网站http://stephencleary.com/上,有大量受欢迎的博客文章以及开源库和应用。
内页插图
精彩书评
涵盖各种并发编程技术,本书体例必然成就其为现代.NET并发技术的理想参考书。”
——Jon Skeet,谷歌高级软件开发工程师,StackOverflow总排名榜首的杰出程序员,著有《深入理解C#》
“让普通人利用大规模并行能力是计算领域的一大趋势。与以前相比,开发人员已经能更好地掌握并发技术,但要把并发讲清楚对很多人仍然是一项巨大的挑战。Stephen专注于这个领域,通过这本易读、完整的参考手册,帮助我们更好地理解并发、线程、反应式编程模型、并行等主题。”
——Scott Hanselman,微软ASP.NET及Azure Web Tools首席项目经理
目录
译者序
前言
第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 方法的异常
第3章 并行开发的基础
3.1 数据的并行处理
3.2 并行聚合
3.3 并行调用
3.4 动态并行
3.5 并行
第4章 数据流基础
4.1 链接数据流块
4.2 传递出错信息
4.3 断开链接
4.4 限制流量
4.5 数据流块的并行处理
4.6 创建自定义数据流块
第5章 Rx 基础
5.1 转换.NET 事件
5.2 发通知给上下文
5.3 用窗口和缓冲对事件分组
5.4 用限流和抽样抑制事件流
5.5 超时
第6章 测试技巧
6.1 async 方法的单元测试
6.2 预计失败的async 方法的单元测试
6.3 async void 方法的单元测试
6.4 数据流网格的单元测试
6.5 Rx Observable 对象的单元测试
6.6 用虚拟时间测试Rx Observable 对象
第7章 互操作
7.1 用async 代码封装Async 方法与Completed 事件
7.2 用async 代码封装Begin/End 方法
7.3 用async 代码封装所有异步操作
7.4 用async 代码封装并行代码
7.5 用async 代码封装Rx Observable 对象
7.6 用Rx Observable 对象封装async 代码
7.7 Rx Observable 对象和数据流网格
第8章 集合
8.1 不可变栈和队列
8.2 不可变列表
8.3 不可变Set 集合
8.4 不可变字典
8.5 线程安全字典
8.6 阻塞队列
8.7 阻塞栈和包
8.8 异步队列
8.9 异步栈和包
8.10 阻塞/ 异步队列
第9章 取消
9.1 发出取消请求
9.2 通过轮询响应取消请求
9.3 超时后取消
9.4 取消async 代码
9.5 取消并行代码
9.6 取消响应式代码
9.7 取消数据流网格
9.8 注入取消请求
9.9 与其他取消体系的互操作
第10章 函数?
10.1 异步接口和继承
10.2 异步构造:工厂
10.3 异步构造:异步初始化模式
10.4 异步属性
10.5 异步事件
10.6 异步销毁
第11章 同步
11.1 阻塞锁
11.2 异步锁
11.3 阻塞信号
11.4 异步信号
11.5 限流
第12章 调度
12.1 调度到线程池
12.2 任务调度器
12.3 调度并行代码
12.4 用调度器实现数据流的同步
第13章 实用技巧
13.1 初始化共享资源
13.2 Rx 延迟求值
13.3 异步数据绑定
13.4 隐式状态
封面介绍
前言/序言
我觉得封面上的动物(麝香猫)能体现出本书的主题。在看到这个封面之前,我对这种动物一无所知,因此特意查了一下。麝香猫会在天花板和阁楼上随处便溺,并且在最不合时宜的情况下互相打斗发出很大的噪音,因此被认为是一种害兽。它们肛门处的气味腺会分泌一种令人作呕的分泌物。在动物保护分类中,麝香猫属于“无危物种”,这相当于说“人们可以随意捕杀,没人会在乎”。麝香猫喜欢吃咖啡果,并且吃完咖啡豆之后不消化,又排泄出来。世界上最贵的咖啡之一——猫屎咖啡,就是用麝香猫排泄出的咖啡豆制造的。美国特种咖啡协会称“这种咖啡味道好极了”。
这些特征使麝香猫成为代表并发和多线程开发的完美吉祥物。软件开发新手会非常讨厌并发和多线程,它们会让原本整洁的代码变得乱七八糟。竞态条件(race condition)和其他莫名其妙的原因会导致程序严重崩溃(经常在实际产品或演示程序中出现)。有些人甚至声称“多线程是魔鬼”,并且完全不使用并发编程。有少数开发人员已经对并发编程产生兴趣,并毫不畏惧地使用它。但大多数开发人员曾被并发编程搞晕,并且留下了不好的印象。
然而,并发性正在成为现代程序的一个必备特性。今天的软件用户要求程序界面在任何时候都不能停止响应;另外,服务器应用的规模变得越来越大。并发编程顺应了这两种变化趋势。
幸好,已经有很多现代的程序库,使并发编程变得比以前简单多了!并行处理和异步开发,不再是高手们的专利。这些程序库使用更高层次的抽象化,让每一个开发人员都能开发出具有很好的响应性和可扩展性的程序。如果在并发编程还非常困难的时候你曾经感到困惑,我建议你用现代工具重新试一下。我们不能说并发编程很容易,但确实不像以前那么难了。
本书读者对象
本书面向希望学习最新并发编程方法的开发人员。你需要熟练掌握.NET 开发,包括泛型集合(generic collection)、枚举(enumerable)和LINQ。你不需要具备任何多线程或异步开发的知识。本书介绍新的、更安全、更易使用的程序库,因此如果你已有这方面的经验,读这本书也会有所帮助。
并发编程适用于所有程序。不管是桌面程序、移动应用还是服务器应用,现在并发性几乎是所有程序的必备特性。利用本书提供的方法,可以提高用户界面的响应速度和服务器应用的可扩展性。现在,并发编程已经非常普遍,对一个专业开发人员来说,掌握并使用有关技术非常必要。
本书写作初衷
在我职业生涯的早期,我费了很大力气学习多线程开发。几年后,我又费了很大力气学习异步开发。尽管那些经验很有价值,但我仍然很希望当时就能有今天的工具和资源。尤其是现在的.NET 语言对async 和await 的支持,实在太棒了。
然而,现在大多数介绍并发编程的图书和资料都是从最底层概念开始讲起。那些书用大量篇幅讲解有关多线程和序列化的基本概念,并且把较高级的技术内容放到最后。我觉得这么做的原因有两个。首先,很多像我这样的并发编程开发人员确实是从底层技术学起,费劲地学习这些老技术。其次,很多书是多年前出版的,现在出现了新技术,改版时就把新技术的内容放到书的末尾。
我觉得那种做法有些落伍。本书只介绍进行并发编程的最新方法。这并不是说,理解全部底层概念没用。我进入大学学习编程时,有一门课程需要利用少量的门电路来组建一个虚拟的CPU,另一门课程则需要用汇编语言进行开发。在我的职业生涯里,从来没有设计过CPU,也很少写汇编程序,但是理解那些基础知识对我的日常工作仍然很有帮助。但最好是从更高级的抽象概念开始学习,我学的第一种编程语言也不是汇编语言。
本书填补了一项市场空白:它是一本用最新方法进行并发编程的入门指引和参考书。本书包含了几种类型的并发编程,包括并行、异步和响应式编程(reactive programming)。至于并发编程的老技术,有关图书和网上资料有很多,本书不再介绍。
图灵程序设计丛书:C#并发编程经典实例 电子书 下载 mobi epub pdf txt