第一图书网

C#并行编程高级教程

(美)希拉里|译者:郑思遥//房佩慈 清华大学
出版时间:

2012-1  

出版社:

清华大学  

作者:

(美)希拉里|译者:郑思遥//房佩慈  

页数:

487  

Tag标签:

无  

内容概要

  您想淋漓尽致地发挥多核计算机系统的处理能力吗?《c#并行编程高级教程:精通.net 4
parallel extensions》将帮助您实现这一夙愿。这本精品书籍浓墨重彩地描述如何使用c# 4、visual studio
2010和.net framework
4高效地创建基于任务的并行应用程序,详细讲述最新的单指令、多数据流指令和向量化等并行编程技术,介绍现代并行库,讨论如何珠联璧合地使用高级intel工具与c#,并指导您巧妙使用新引入的轻型协调结构来开发自己的解决方案并解决最棘手的并发编程问题。
  主要内容
  介绍如何基于新task parallel library和.net 4设计稳定的可扩展并行应用程序。
  讲解命令式数据并行、命令式任务并行、并发集合以及协调数据结构。
  描述plinq高级声明式数据并行。
  讨论如何使用新的visual studio 2010并行调试功能来调试匿名方法、任务和线程。
  演示如何对数据源进行分区,以便在不同任务和线程之间合理分配工作负荷。

作者简介

作者:(美国)希拉里(Gastón C.Hillar) 译者:郑思遥 房佩慈 合著者:金旭亮Gastón C.Hillar,从8岁起就开始使用计算机了。在20世纪80年代初,他开始在传奇的TexasTI-99/4A和Commodore64家用计算机上编写程序。他作为一名优秀毕业生在UADE大学获得了学士学位,然后又在UCEMA大学凭借出色的毕业论文获得了工商管理硕士学位。自1997年以来,Gaston在并行编程、多处理器和多核处理器领域进行了深入研究。在设计和开发各种类型复杂的利用多核处理能力的并行解决方案方面,他有着14年的丰富经验,后来,他开始通过C#和.NETFramework编写并行解决方案。

书籍目录

第1章 基于任务的程序设计
 1.1 使用共享内存的多核系统
 1.1.1 共享内存多核系统与分布式内存系统之间的区别
 1.1.2 并行程序设计和多核程序设计
 1.2 理解硬件线程和软件线程
 1.3 理解amdahl法则
 1.4 考虑gustafson法则
 1.5 使用轻量级并发模型
 1.6 创建成功的基于任务的设计
 1.6.1 以并发的思想指导设计
 1.6.2 理解交错并发、并发和并行之间的区别
 1.6.3 并行化任务
 1.6.4 尽量减少临界区
 1.6.5 理解多核并行程序的设计原则
 1.7 为numa架构和更高的可扩展性做好准备
 1.8 判断是否适合并行化
 1.9 小结
第2章 命令式数据并行
 2.1 加载并行任务  
 2.1.1 system.threading.tasks.parallel类
 2.1.2 parallel.invoke
 2.2 将串行代码转换为并行代码
 2.2.1 检测可并行化的热点
 2.2.2 测量并行执行的加速效果
 2.2.3 理解并发执行
 2.3 循环并行化
 2.3.1 parallel.for
 2.3.2 parallel.foreach
 2.3.3 从并行循环中退出
 2.4 指定并行度
 2.4.1 paralleloptions
 2.4.2 计算硬件线程
 2.4.3 逻辑内核并不是物理内核
 2.5 通过甘特图检测临界区
 2.6 小结
第3章 命令式任务并行
 3.1 创建和管理任务
 3.1.1 system.threading.tasks.task
 3.1.2 理解task状态和生命周期
 3.1.3 通过使用任务来对代码进行并行化
 3.1.4 等待任务完成
 3.1.5 忘记复杂的线程
 3.1.6 通过取消标记取消任务
 3.1.7 从任务返回值
 3.1.8 taskcreationoptions
 3.1.9 通过延续串联多个任务
 3.1.10 编写适应并发和并行的代码
 3.2 小结
第4章 并发集合
 4.1 理解并发集合提供的功能
 4.1.1 system.collections.concurrent
 4.1.2 concurrentqueue
 4.1.3 理解并行的生产者-消费者模式
 4.1.4 concurrentstack
 4.1.5 将使用数组和不安全集合的代码转换为使用并发集合的代码
 4.1.6 concurrentbag
 4.1.7 iproducerconsumer
 collection
 4.1.8 blockingcollection
 4.1.9 concurrentdictionary
 4.2 小结
第5章 协调数据结构
 5.1 通过汽车和车道理解并发难题
 5.1.1 非预期的副作用
 5.1.2 竞争条件
 5.1.3 死锁
 5.1.4 使用原子操作的无锁算法
 5.1.5 使用本地存储的无锁算法
 5.2 理解新的同步机制
 5.3 使用同步原语
 5.3.1 通过屏障同步并发任务
 5.3.2 屏障和continuewhenall
 5.3.3 在所有的参与者任务中捕捉异常
 5.3.4 使用超时
 5.3.5 使用动态数目的参与者
 5.4 使用互斥锁
 5.4.1 使用monitor
 5.4.2 使用锁超时
 5.4.3 将代码重构为避免使用锁
 5.5 将自旋锁用作互斥锁原语
 5.5.1 使用超时
 5.5.2 使用基于自旋的等待
 5.5.3 自旋和处理器出让
 5.5.4 使用volatile修饰符
 5.6 使用轻量级的手动重置事件
 5.6.1 使用manualreseteventslim进行自旋和等待
 5.6.2 使用超时和取消
 5.6.3 使用manualresetevent
 5.7 限制资源的并发访问
 5.7.1 使用semaphoreslim
 5.7.2 使用超时和取消
 5.7.3 使用 semaphore
 5.8 通过countdownevent简化动态fork和join场景
 5.9 使用原子操作
 5.10 小结
第6章 plinq:声明式数据并行
 6.1 从linq转换到plinq
 6.1.1 parallelenumerable及其asparallel方法
 6.1.2 asordered和orderby子句
 6.2 指定执行模式
 6.3 理解plinq中的数据分区
 6.4 通过plinq执行归约操作
 6.5 创建自定义的plinq聚合函数
 6.6 并发plinq任务
 6.7 取消plinq
 6.8 指定所需的并行度
 6.8.1 withdegreeofparallelism
 6.8.2 测量可扩展性
 6.9 使用forall
 6.9.1 foreach和forall的区别
 6.9.2 测量可扩展性
 6.10 通过withmergeoptions配置返回结果的方式
 6.11 处理plinq抛出的异常
 6.12 使用plinq执行mapreduce算法
 6.13 使用plinq设计串行多步操作
 6.14 小结
第7章 visual studio 2010的任务调试能力
 7.1 充分利用多显示器的支持
 7.2 理解并行任务调试器窗口
 7.3 查看parallel stacks图
 7.4 跟踪并发代码
 7.4.1 调试匿名方法
 7.4.2 查看方法
 7.4.3 在源代码中查看线程
 7.5 检测死锁
 7.6 小结
第8章 线程池
 8.1 探究任务的底层技术
 8.2 理解新的clr 4线程池引擎
 8.2.1 理解全局队列
 8.2.2 等待工作线程完成工作
 8.2.3 跟踪动态数目的工作线程
 8.2.4 使用任务(而不是线程)将作业加入队列
 8.2.5 理解任务和线程池之间的关系
 8.2.6 理解局部队列和工作窃取算法
 8.2.7 指定自定义的任务调度器
 8.3 小结
第9章 异步编程模型
 9.1 结合使用异步编程和任务
 9.1.1 使用taskfactory.fromasync
 9.1.2 编写异步方法执行结束之后的延续
 9.1.3 合并多个并发异步操作的结果
 9.1.4 执行异步wpf ui更新
 9.1.5 执行异步windows forms ui更新
 9.1.6 创建执行eap操作的任务
 9.1.7 使用taskcompletionsource
 9.2 小结
第10章 并行测试和调优
 10.1 准备并行测试
 10.1.1 使用性能剖析功能
 10.1.2 测量并发性
 10.2 常见问题模式的解决方案
 10.2.1 串行化的执行
 10.2.2 锁争用
 10.2.3 锁封护
 10.2.4 申请超额
 10.2.5 申请不足
 10.2.6 分区问题
 10.2.7 工作站垃圾回收开销
 10.2.8 使用服务器垃圾回收
 10.2.9 i/o瓶颈
 10.2.10 主线程过载
 10.3 理解伪共享
 10.4 小结
第11章 向量化、simd指令以及其他并行库
 11.1 理解simd和向量化
 11.2 从mmx到sse4.x和avx
 11.3 使用intel math kernellibrary
 11.3.1 使用适用于多核的高度优化的软件函数
 11.3.2 将基于任务的编程和外部优化的库混合使用
 11.3.3 并行生成伪随机数
 11.4 使用intel integratedperformance primitives
 11.5 小结
附录a .net 4中与并行相关的类图
附录b 并发uml模型
附录c parallel extensions extras

章节摘录

版权页:插图:


编辑推荐

《C#并行编程高级教程:精通NET 4 Parallel Extensions》是由清华大学出版社出版的。

图书封面

图书标签Tags

广告

下载页面


C#并行编程高级教程 PDF格式下载



书的内容很好,对使用****进行并行编程讲解很详细


详细讲解了并行编程的方方面面,也有示例代码,值得一读


多线程开发难得的好书,对并行开发设计来说很有帮助


听说算是C#并行编程里比较好的书,买来专门学习的,包装不错,书很好~


我是并行算法的初学者。。。感觉这本书有点像参考手册。。对我有难度看懂运用!!!。期待傻瓜一步一步指导式的并行算法的书。并行计算难啊!!!


并行开发不是很容易的书,这本书抛砖引路而已,实践起来还是具体问题具体看,伸缩性和性能之间需要平衡


讲解了高级编程的内容,适合进阶的人学习


老早以前出过一本多线程编程参考啥的,那还是在2.0时代,多年过去了总算又出了本相关书籍不容易啊。


对多线程的编程很有帮助


多线程方面的书不多,希望这本有所帮助


对于尤其多线程的编写,很有促进作用


这本书很有指导价值,不像其他的技术书籍,把大量的代码堆砌在书中。这本书中代码很精简,理论很实在。值得一读。


**** 4的新东西,值得看看呀


还没看,不过wrox出品的应该是经典书籍


经典的书籍,受益匪浅。


这本书真值的看看,****开发人员必看啊


讲解的东西很有深度,需要好好理解


很好,内容比较新颖,阅读中


不错的一本书!!!!!!!!!!!!!!


总体感觉还不错,书的质量也很好,字迹清晰,要好好研究一下


随手翻了一下 书的质量还是不错的


他说相当好


想全面地学习并行编程,这本书很好!


内容我很喜欢,只是并行编程的常出错和技巧类,写的不详。


以后并行是趋势啊。


平行库讲的比较全面, 还不错


讲的很详细,也挺全面。


书的内容很精彩,需要慢慢品读。


不是很需要,也没怎么细看,感觉买错了


读过英文原版还不错!希望翻译的质量不会让我失望


值得一读。但需要有一定基础


内容适合高级程序员阅读,唯一的缺点是物流,本来是周一上午送到的,不知怎么搞得,一直等到周二才送到。


内容很好, 但是质量太差, 有点像盗版


送货慢,显示4月1号送达结果晚了一天。快递态度比较吊。
为什么当当卖的书永远看着是脏的...要不是看着卖的便宜些,肯定不会在这买。


这本书比较详细的介绍了并行编程,,包括里面的数据同步问题,比如锁啊 信号量之类的使用。总体来说是一本扩展用的好书,建议有C#基础,对APM,Task ,Parallel 有一定基础的人去阅读,会让你看到不一样的并行和它的魅力


还应当提供压缩开销的解决方案这本书我更多关注与VS2010操作相关的章节。


介于图灵和机械粗版社之间吧,跟图灵还是有很大差距的以上仅评论翻译质量,内容质量还是很好的


感觉一般般,很多内容msdn上都有


买回来几乎就一口气简读了一下,内容翔实,写的新技术很多,对于刚上手VS2010-2012的人很适合


基本上把并行编程讲得比较清楚,最后一章需要的类库需要花钱,实用性不大。


这本书对.net4中新增的并行编程技术进行了非常详细的讲解,对于想在这一块深入学习的朋友来说绝对是非常有帮助的一本书,也有详细的代码和代码注释,唯一觉得稍有不满的就是,书中对代码的解释方式有些啰嗦了,先是列出一个全的代码,然后后面讲解的时候又将对应部分的代码复制了一遍来进行讲解,完全没有这个必要,可以在完整的代码中加上标记,然后直接引用标记不就行了吗?


还没开始看,C#需要捡捡再看这些相对高层次的,但书的外观质量满意


需要潜心阅读,练习实践


4.0新特性说的不错!看了两三章,感觉很不错


老早以前出过一本多线程编程参考啥的,那还是在2.0时代,多年过去了总算又出了本相关书籍不容易啊。如果没什么基础的话..就建议大家先把VISUAL C#2010先学习了再回过头来看这本书.


重点介绍.NET4有关并发编程的新功能库


.NET并行运算的好书


把并行编程介绍的很详细


哎哟不错哦·


价格比外面低


正品的图书


有点深,但是多核时代必须要掌握这门技术


相关图书