描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111561026丛书名: 华章程序员书库
内容简介
为了创建这样的应用程序,你需要学习如何在程序中有效地使用多个CPU核心。如果你使用的是Microsoft.NET开发平台以及C#编程语言,那么本书将是一个编写高性能、高响应性的应用程序的完美起点。本书的目的是给你提供C#中多线程以及并行编程的详尽指导。我们将从基本概念开始,每章主题比前一章都有所拔高,后展示了现实世界中的并行编程模式以及Windows商店应用示例。
目 录
目 录Contents
译者序
前 言
第1章 线程基础1
1.1 简介1
1.2 使用C#创建线程2
1.2.1 准备工作2
1.2.2 实现方式2
1.2.3 工作原理4
1.3 暂停线程4
1.3.1 准备工作5
1.3.2 实现方式5
1.3.3 工作原理5
1.4 线程等待6
1.4.1 准备工作6
1.4.2 实现方式6
1.4.3 工作原理7
1.5 终止线程7
1.5.1 准备工作7
1.5.2 实现方式7
1.5.3 工作原理8
1.6 检测线程状态8
1.6.1 准备工作8
1.6.2 实现方式8
1.6.3 工作原理9
1.7 线程优先级10
1.7.1 准备工作10
1.7.2 实现方式10
1.7.3 工作原理12
1.8 前台线程和后台线程12
1.8.1 准备工作12
1.8.2 实现方式12
1.8.3 工作原理13
1.9 向线程传递参数14
1.9.1 准备工作14
1.9.2 实现方式14
1.9.3 工作原理16
1.9.4 更多信息16
1.10 使用C#中的lock关键字16
1.10.1 准备工作16
1.10.2 实现方式16
1.10.3 工作原理18
1.11 使用Monitor类锁定资源19
1.11.1 准备工作19
1.11.2 实现方式19
1.11.3 工作原理21
1.12 处理异常21
1.12.1 准备工作21
1.12.2 实现方式22
1.12.3 工作原理23
第2章 线程同步24
2.1 简介24
2.2 执行基本的原子操作25
2.2.1 准备工作25
2.2.2 实现方式25
2.2.3 工作原理27
2.3 使用Mutex类28
2.3.1 准备工作28
2.3.2 实现方式28
2.3.3 工作原理29
2.4 使用SemaphoreSlim类29
2.4.1 准备工作29
2.4.2 实现方式29
2.4.3 工作原理30
2.4.4 更多信息30
2.5 使用AutoResetEvent类31
2.5.1 准备工作31
2.5.2 实现方式31
2.5.3 工作原理32
2.6 使用ManualResetEventSlim类32
2.6.1 准备工作32
2.6.2 实现方式33
2.6.3 工作原理34
2.6.4 更多信息34
2.7 使用CountDownEvent类34
2.7.1 准备工作34
2.7.2 实现方式34
2.7.3 工作原理35
2.8 使用Barrier类35
2.8.1 准备工作35
2.8.2 实现方式36
2.8.3 工作原理36
2.9 使用ReaderWriterLockSlim类37
2.9.1 准备工作37
2.9.2 实现方式37
2.9.3 工作原理39
2.10 使用SpinWait类39
2.10.1 准备工作39
2.10.2 实现方式39
2.10.3 工作原理41
第3章 使用线程池42
3.1 简介42
3.2 在线程池中调用委托43
3.2.1 准备工作44
3.2.2 实现方式44
3.2.3 工作原理45
3.3 向线程池中放入异步操作46
3.3.1 准备工作46
3.3.2 实现方式46
3.3.3 工作原理47
3.4 线程池与并行度48
3.4.1 准备工作48
3.4.2 实现方式48
3.4.3 工作原理49
3.5 实现一个取消选项50
3.5.1 准备工作50
3.5.2 实现方式50
3.5.3 工作原理52
3.6 在线程池中使用等待事件处理器及超时52
3.6.1 准备工作52
3.6.2 实现方式52
3.6.3 工作原理54
3.6.4 更多信息54
3.7 使用计时器54
3.7.1 准备工作55
3.7.2 实现方式55
3.7.3 工作原理56
3.8 使用BackgroundWorker组件56
3.8.1 准备工作56
3.8.2 实现方式56
3.8.3 工作原理58
第4章 使用任务并行库60
4.1 简介60
4.2 创建任务61
4.2.1 准备工作62
4.2.2 实现方式62
4.2.3 工作原理63
4.3 使用任务执行基本的操作63
4.3.1 准备工作64
4.3.2 实现方式64
4.3.3 工作原理65
4.4 组合任务65
4.4.1 准备工作65
4.4.2 实现方式65
4.4.3 工作原理67
4.5 将APM模式转换为任务68
4.5.1 准备工作68
4.5.2 实现方式68
4.5.3 工作原理70
4.6 将EAP模式转换为任务71
4.6.1 准备工作71
4.6.2 实现方式71
4.6.3 工作原理72
4.7 实现取消选项73
4.7.1 准备工作73
4.7.2 实现方式73
4.7.3 工作原理74
4.8 处理任务中的异常75
4.8.1 准备工作75
4.8.2 实现方式75
4.8.3 工作原理76
4.8.4 更多信息77
4.9 并行运行任务77
4.9.1 准备工作77
4.9.2 实现方式77
4.9.3 工作原理78
4.10 使用TaskScheduler配置任务的执行79
4.10.1 准备工作79
4.10.2 实现方式79
4.10.3 工作原理81
第5章 使用C# 6.083
5.1 简介83
5.2 使用await操作符获取异步任务结果85
5.2.1 准备工作85
5.2.2 实现方式85
5.2.3 工作原理87
5.3 在lambda表达式中使用await操作符87
5.3.1 准备工作87
5.3.2 实现方式87
5.3.3 工作原理88
5.4 对连续的异步任务使用await操作符89
5.4.1 准备工作89
5.4.2 实现方式89
5.4.3 工作原理90
5.5 对并行执行的异步任务使用await操作符91
5.5.1 准备工作91
5.5.2 实现方式91
5.5.3 工作原理92
5.6 处理异步操作中的异常93
5.6.1 准备工作93
5.6.2 实现方式93
5.6.3 工作原理95
5.7 避免使用捕获的同步上下文95
5.7.1 准备工作95
5.7.2 实现方式96
5.7.3 工作原理98
5.8 使用async void方法99
5.8.1 准备工作99
5.8.2 实现方式99
5.8.3 工作原理101
5.9 设计一个自定义的awaitable类型102
5.9.1 准备工作102
5.9.2 实现方式102
5.9.3 工作原理104
5.10 对动态类型使用await105
5.10.1 准备工作105
5.10.2 实现方式105
5.10.
译者序
前 言
第1章 线程基础1
1.1 简介1
1.2 使用C#创建线程2
1.2.1 准备工作2
1.2.2 实现方式2
1.2.3 工作原理4
1.3 暂停线程4
1.3.1 准备工作5
1.3.2 实现方式5
1.3.3 工作原理5
1.4 线程等待6
1.4.1 准备工作6
1.4.2 实现方式6
1.4.3 工作原理7
1.5 终止线程7
1.5.1 准备工作7
1.5.2 实现方式7
1.5.3 工作原理8
1.6 检测线程状态8
1.6.1 准备工作8
1.6.2 实现方式8
1.6.3 工作原理9
1.7 线程优先级10
1.7.1 准备工作10
1.7.2 实现方式10
1.7.3 工作原理12
1.8 前台线程和后台线程12
1.8.1 准备工作12
1.8.2 实现方式12
1.8.3 工作原理13
1.9 向线程传递参数14
1.9.1 准备工作14
1.9.2 实现方式14
1.9.3 工作原理16
1.9.4 更多信息16
1.10 使用C#中的lock关键字16
1.10.1 准备工作16
1.10.2 实现方式16
1.10.3 工作原理18
1.11 使用Monitor类锁定资源19
1.11.1 准备工作19
1.11.2 实现方式19
1.11.3 工作原理21
1.12 处理异常21
1.12.1 准备工作21
1.12.2 实现方式22
1.12.3 工作原理23
第2章 线程同步24
2.1 简介24
2.2 执行基本的原子操作25
2.2.1 准备工作25
2.2.2 实现方式25
2.2.3 工作原理27
2.3 使用Mutex类28
2.3.1 准备工作28
2.3.2 实现方式28
2.3.3 工作原理29
2.4 使用SemaphoreSlim类29
2.4.1 准备工作29
2.4.2 实现方式29
2.4.3 工作原理30
2.4.4 更多信息30
2.5 使用AutoResetEvent类31
2.5.1 准备工作31
2.5.2 实现方式31
2.5.3 工作原理32
2.6 使用ManualResetEventSlim类32
2.6.1 准备工作32
2.6.2 实现方式33
2.6.3 工作原理34
2.6.4 更多信息34
2.7 使用CountDownEvent类34
2.7.1 准备工作34
2.7.2 实现方式34
2.7.3 工作原理35
2.8 使用Barrier类35
2.8.1 准备工作35
2.8.2 实现方式36
2.8.3 工作原理36
2.9 使用ReaderWriterLockSlim类37
2.9.1 准备工作37
2.9.2 实现方式37
2.9.3 工作原理39
2.10 使用SpinWait类39
2.10.1 准备工作39
2.10.2 实现方式39
2.10.3 工作原理41
第3章 使用线程池42
3.1 简介42
3.2 在线程池中调用委托43
3.2.1 准备工作44
3.2.2 实现方式44
3.2.3 工作原理45
3.3 向线程池中放入异步操作46
3.3.1 准备工作46
3.3.2 实现方式46
3.3.3 工作原理47
3.4 线程池与并行度48
3.4.1 准备工作48
3.4.2 实现方式48
3.4.3 工作原理49
3.5 实现一个取消选项50
3.5.1 准备工作50
3.5.2 实现方式50
3.5.3 工作原理52
3.6 在线程池中使用等待事件处理器及超时52
3.6.1 准备工作52
3.6.2 实现方式52
3.6.3 工作原理54
3.6.4 更多信息54
3.7 使用计时器54
3.7.1 准备工作55
3.7.2 实现方式55
3.7.3 工作原理56
3.8 使用BackgroundWorker组件56
3.8.1 准备工作56
3.8.2 实现方式56
3.8.3 工作原理58
第4章 使用任务并行库60
4.1 简介60
4.2 创建任务61
4.2.1 准备工作62
4.2.2 实现方式62
4.2.3 工作原理63
4.3 使用任务执行基本的操作63
4.3.1 准备工作64
4.3.2 实现方式64
4.3.3 工作原理65
4.4 组合任务65
4.4.1 准备工作65
4.4.2 实现方式65
4.4.3 工作原理67
4.5 将APM模式转换为任务68
4.5.1 准备工作68
4.5.2 实现方式68
4.5.3 工作原理70
4.6 将EAP模式转换为任务71
4.6.1 准备工作71
4.6.2 实现方式71
4.6.3 工作原理72
4.7 实现取消选项73
4.7.1 准备工作73
4.7.2 实现方式73
4.7.3 工作原理74
4.8 处理任务中的异常75
4.8.1 准备工作75
4.8.2 实现方式75
4.8.3 工作原理76
4.8.4 更多信息77
4.9 并行运行任务77
4.9.1 准备工作77
4.9.2 实现方式77
4.9.3 工作原理78
4.10 使用TaskScheduler配置任务的执行79
4.10.1 准备工作79
4.10.2 实现方式79
4.10.3 工作原理81
第5章 使用C# 6.083
5.1 简介83
5.2 使用await操作符获取异步任务结果85
5.2.1 准备工作85
5.2.2 实现方式85
5.2.3 工作原理87
5.3 在lambda表达式中使用await操作符87
5.3.1 准备工作87
5.3.2 实现方式87
5.3.3 工作原理88
5.4 对连续的异步任务使用await操作符89
5.4.1 准备工作89
5.4.2 实现方式89
5.4.3 工作原理90
5.5 对并行执行的异步任务使用await操作符91
5.5.1 准备工作91
5.5.2 实现方式91
5.5.3 工作原理92
5.6 处理异步操作中的异常93
5.6.1 准备工作93
5.6.2 实现方式93
5.6.3 工作原理95
5.7 避免使用捕获的同步上下文95
5.7.1 准备工作95
5.7.2 实现方式96
5.7.3 工作原理98
5.8 使用async void方法99
5.8.1 准备工作99
5.8.2 实现方式99
5.8.3 工作原理101
5.9 设计一个自定义的awaitable类型102
5.9.1 准备工作102
5.9.2 实现方式102
5.9.3 工作原理104
5.10 对动态类型使用await105
5.10.1 准备工作105
5.10.2 实现方式105
5.10.
前 言
前 言Preface不久前,典型的个人计算机的CPU还只有一个计算核心,并且功耗足以煎熟鸡蛋。2005年,英特尔推出了其首款多核心CPU,从此计算机开始向不同的方向发展。低耗电量及多个计算核心变得比提高行计算(row computing)的核心性能更重要。这也导致了编程范式的改变。现在我们需要学习如何有效地使用所有CPU核心来化性能,并同时通过在特定时间只运行需要的程序来节省电池电量。除此之外,我们在编写服务器端应用程序时需要有效地利用多个CPU核心,甚至多台计算机来支持尽可能多的用户。
为了创建这样的应用程序,你需要学习如何在程序中有效地使用多个CPU核心。如果你使用的是Microsoft .NET开发平台以及C#编程语言,那么本书将是一个编写高性能、高响应性的应用程序的完美起点。
本书的目的是给你提供C#中多线程以及并行编程的详尽指导。我们将从基本概念开始,每章主题比前一章都有所拔高,后展示现实世界中的并行编程模式以及通用Windows应用和跨平台应用示例。
本书内容第1章介绍了C#中基本的线程操作。本章解释了什么是线程,使用线程的优缺点,以及与线程相关的其他重要方面。
第2章描述了线程交互细节。你将了解为何我们需要协调线程,以及协调组织线程的不同方式。
第3章解释了线程池概念。本章展示了如何使用线程池,如何执行异步操作,以及使用线程池的好的和不好的实践。
第4章深入讲解了任务并行库(Task Parallel Library,TPL)框架。本章讲述了TPL的所有重要方面,包括任务组合、异常管理及取消操作等。
第5章深入解释了近引入的C#特性——异步方法。你将了解async和await关键字,如何在不同的场景中使用它们,以及await的底层工作机制。
第6章描述了.NET框架中并行算法的标准数据结构,并为每种数据结构展示了示例编程场景。
第7章深入讲解了并行LINQ基础设施。本章讲述了任务和数据并行度、并行化LINQ查询、调整并行选项、分割查询和集合并行查询结果等内容。
第8章解释了如何以及何时使用Reactive Extensions框架。你将学习如何组合事件,如何对事件序列执行LINQ查询等。
第9章深入讲解了异步I/O进程,包括文件、网络及数据库等场景。
第10章列出了针对常见的并行编程问题的解决方案。
第11章讲述了为Windows10、OS X,以及Linux编写异步应用程序。你将学习如何使用Windows 10异步API,以及如何在Windows商店应用中完成后台工作。你也会熟悉跨平台的.NET开发工具和组件。
准备事项我们需要Microsoft Visual Studio社区版2015来完成大多数章节的学习。在第11章中,对于OS X和Linux可能需要Visual Studio Code编辑器,当然你也可以使用任何你熟悉的编辑工具。
读者对象本书的读者对象为没有或只有少量多线程及异步和并发编程背景的C#开发人员。本书涵盖了C#和.NET生态系统中从基础概念到复杂编程模式及算法的很多与多线程相关的主题。
下载示例代码本书的示例代码可登录华章网站(http://www.hzbook.com)中的本书页面下载。
为了创建这样的应用程序,你需要学习如何在程序中有效地使用多个CPU核心。如果你使用的是Microsoft .NET开发平台以及C#编程语言,那么本书将是一个编写高性能、高响应性的应用程序的完美起点。
本书的目的是给你提供C#中多线程以及并行编程的详尽指导。我们将从基本概念开始,每章主题比前一章都有所拔高,后展示现实世界中的并行编程模式以及通用Windows应用和跨平台应用示例。
本书内容第1章介绍了C#中基本的线程操作。本章解释了什么是线程,使用线程的优缺点,以及与线程相关的其他重要方面。
第2章描述了线程交互细节。你将了解为何我们需要协调线程,以及协调组织线程的不同方式。
第3章解释了线程池概念。本章展示了如何使用线程池,如何执行异步操作,以及使用线程池的好的和不好的实践。
第4章深入讲解了任务并行库(Task Parallel Library,TPL)框架。本章讲述了TPL的所有重要方面,包括任务组合、异常管理及取消操作等。
第5章深入解释了近引入的C#特性——异步方法。你将了解async和await关键字,如何在不同的场景中使用它们,以及await的底层工作机制。
第6章描述了.NET框架中并行算法的标准数据结构,并为每种数据结构展示了示例编程场景。
第7章深入讲解了并行LINQ基础设施。本章讲述了任务和数据并行度、并行化LINQ查询、调整并行选项、分割查询和集合并行查询结果等内容。
第8章解释了如何以及何时使用Reactive Extensions框架。你将学习如何组合事件,如何对事件序列执行LINQ查询等。
第9章深入讲解了异步I/O进程,包括文件、网络及数据库等场景。
第10章列出了针对常见的并行编程问题的解决方案。
第11章讲述了为Windows10、OS X,以及Linux编写异步应用程序。你将学习如何使用Windows 10异步API,以及如何在Windows商店应用中完成后台工作。你也会熟悉跨平台的.NET开发工具和组件。
准备事项我们需要Microsoft Visual Studio社区版2015来完成大多数章节的学习。在第11章中,对于OS X和Linux可能需要Visual Studio Code编辑器,当然你也可以使用任何你熟悉的编辑工具。
读者对象本书的读者对象为没有或只有少量多线程及异步和并发编程背景的C#开发人员。本书涵盖了C#和.NET生态系统中从基础概念到复杂编程模式及算法的很多与多线程相关的主题。
下载示例代码本书的示例代码可登录华章网站(http://www.hzbook.com)中的本书页面下载。
评论
还没有评论。