出版時間:2012-1 出版社:清華大學(xué) 作者:(美)希拉里|譯者:鄭思遙//房佩慈 頁數(shù):487
Tag標(biāo)簽:無
內(nèi)容概要
您想淋漓盡致地發(fā)揮多核計算機(jī)系統(tǒng)的處理能力嗎?《c#并行編程高級教程:精通.net 4
parallel extensions》將幫助您實現(xiàn)這一夙愿。這本精品書籍濃墨重彩地描述如何使用c# 4、visual studio
2010和.net framework
4高效地創(chuàng)建基于任務(wù)的并行應(yīng)用程序,詳細(xì)講述最新的單指令、多數(shù)據(jù)流指令和向量化等并行編程技術(shù),介紹現(xiàn)代并行庫,討論如何珠聯(lián)璧合地使用高級intel工具與c#,并指導(dǎo)您巧妙使用新引入的輕型協(xié)調(diào)結(jié)構(gòu)來開發(fā)自己的解決方案并解決最棘手的并發(fā)編程問題。
主要內(nèi)容
介紹如何基于新task parallel library和.net 4設(shè)計穩(wěn)定的可擴(kuò)展并行應(yīng)用程序。
講解命令式數(shù)據(jù)并行、命令式任務(wù)并行、并發(fā)集合以及協(xié)調(diào)數(shù)據(jù)結(jié)構(gòu)。
描述plinq高級聲明式數(shù)據(jù)并行。
討論如何使用新的visual studio 2010并行調(diào)試功能來調(diào)試匿名方法、任務(wù)和線程。
演示如何對數(shù)據(jù)源進(jìn)行分區(qū),以便在不同任務(wù)和線程之間合理分配工作負(fù)荷。
作者簡介
作者:(美國)希拉里(Gastón C.Hillar) 譯者:鄭思遙 房佩慈 合著者:金旭亮Gastón C.Hillar,從8歲起就開始使用計算機(jī)了。在20世紀(jì)80年代初,他開始在傳奇的TexasTI-99/4A和Commodore64家用計算機(jī)上編寫程序。他作為一名優(yōu)秀畢業(yè)生在UADE大學(xué)獲得了學(xué)士學(xué)位,然后又在UCEMA大學(xué)憑借出色的畢業(yè)論文獲得了工商管理碩士學(xué)位。自1997年以來,Gaston在并行編程、多處理器和多核處理器領(lǐng)域進(jìn)行了深入研究。在設(shè)計和開發(fā)各種類型復(fù)雜的利用多核處理能力的并行解決方案方面,他有著14年的豐富經(jīng)驗,后來,他開始通過C#和.NETFramework編寫并行解決方案。
書籍目錄
第1章 基于任務(wù)的程序設(shè)計
1.1 使用共享內(nèi)存的多核系統(tǒng)
1.1.1 共享內(nèi)存多核系統(tǒng)與分布式內(nèi)存系統(tǒng)之間的區(qū)別
1.1.2 并行程序設(shè)計和多核程序設(shè)計
1.2 理解硬件線程和軟件線程
1.3 理解amdahl法則
1.4 考慮gustafson法則
1.5 使用輕量級并發(fā)模型
1.6 創(chuàng)建成功的基于任務(wù)的設(shè)計
1.6.1 以并發(fā)的思想指導(dǎo)設(shè)計
1.6.2 理解交錯并發(fā)、并發(fā)和并行之間的區(qū)別
1.6.3 并行化任務(wù)
1.6.4 盡量減少臨界區(qū)
1.6.5 理解多核并行程序的設(shè)計原則
1.7 為numa架構(gòu)和更高的可擴(kuò)展性做好準(zhǔn)備
1.8 判斷是否適合并行化
1.9 小結(jié)
第2章 命令式數(shù)據(jù)并行
2.1 加載并行任務(wù)
2.1.1 system.threading.tasks.parallel類
2.1.2 parallel.invoke
2.2 將串行代碼轉(zhuǎn)換為并行代碼
2.2.1 檢測可并行化的熱點(diǎn)
2.2.2 測量并行執(zhí)行的加速效果
2.2.3 理解并發(fā)執(zhí)行
2.3 循環(huán)并行化
2.3.1 parallel.for
2.3.2 parallel.foreach
2.3.3 從并行循環(huán)中退出
2.4 指定并行度
2.4.1 paralleloptions
2.4.2 計算硬件線程
2.4.3 邏輯內(nèi)核并不是物理內(nèi)核
2.5 通過甘特圖檢測臨界區(qū)
2.6 小結(jié)
第3章 命令式任務(wù)并行
3.1 創(chuàng)建和管理任務(wù)
3.1.1 system.threading.tasks.task
3.1.2 理解task狀態(tài)和生命周期
3.1.3 通過使用任務(wù)來對代碼進(jìn)行并行化
3.1.4 等待任務(wù)完成
3.1.5 忘記復(fù)雜的線程
3.1.6 通過取消標(biāo)記取消任務(wù)
3.1.7 從任務(wù)返回值
3.1.8 taskcreationoptions
3.1.9 通過延續(xù)串聯(lián)多個任務(wù)
3.1.10 編寫適應(yīng)并發(fā)和并行的代碼
3.2 小結(jié)
第4章 并發(fā)集合
4.1 理解并發(fā)集合提供的功能
4.1.1 system.collections.concurrent
4.1.2 concurrentqueue
4.1.3 理解并行的生產(chǎn)者-消費(fèi)者模式
4.1.4 concurrentstack
4.1.5 將使用數(shù)組和不安全集合的代碼轉(zhuǎn)換為使用并發(fā)集合的代碼
4.1.6 concurrentbag
4.1.7 iproducerconsumer
collection
4.1.8 blockingcollection
4.1.9 concurrentdictionary
4.2 小結(jié)
第5章 協(xié)調(diào)數(shù)據(jù)結(jié)構(gòu)
5.1 通過汽車和車道理解并發(fā)難題
5.1.1 非預(yù)期的副作用
5.1.2 競爭條件
5.1.3 死鎖
5.1.4 使用原子操作的無鎖算法
5.1.5 使用本地存儲的無鎖算法
5.2 理解新的同步機(jī)制
5.3 使用同步原語
5.3.1 通過屏障同步并發(fā)任務(wù)
5.3.2 屏障和continuewhenall
5.3.3 在所有的參與者任務(wù)中捕捉異常
5.3.4 使用超時
5.3.5 使用動態(tài)數(shù)目的參與者
5.4 使用互斥鎖
5.4.1 使用monitor
5.4.2 使用鎖超時
5.4.3 將代碼重構(gòu)為避免使用鎖
5.5 將自旋鎖用作互斥鎖原語
5.5.1 使用超時
5.5.2 使用基于自旋的等待
5.5.3 自旋和處理器出讓
5.5.4 使用volatile修飾符
5.6 使用輕量級的手動重置事件
5.6.1 使用manualreseteventslim進(jìn)行自旋和等待
5.6.2 使用超時和取消
5.6.3 使用manualresetevent
5.7 限制資源的并發(fā)訪問
5.7.1 使用semaphoreslim
5.7.2 使用超時和取消
5.7.3 使用 semaphore
5.8 通過countdownevent簡化動態(tài)fork和join場景
5.9 使用原子操作
5.10 小結(jié)
第6章 plinq:聲明式數(shù)據(jù)并行
6.1 從linq轉(zhuǎn)換到plinq
6.1.1 parallelenumerable及其asparallel方法
6.1.2 asordered和orderby子句
6.2 指定執(zhí)行模式
6.3 理解plinq中的數(shù)據(jù)分區(qū)
6.4 通過plinq執(zhí)行歸約操作
6.5 創(chuàng)建自定義的plinq聚合函數(shù)
6.6 并發(fā)plinq任務(wù)
6.7 取消plinq
6.8 指定所需的并行度
6.8.1 withdegreeofparallelism
6.8.2 測量可擴(kuò)展性
6.9 使用forall
6.9.1 foreach和forall的區(qū)別
6.9.2 測量可擴(kuò)展性
6.10 通過withmergeoptions配置返回結(jié)果的方式
6.11 處理plinq拋出的異常
6.12 使用plinq執(zhí)行mapreduce算法
6.13 使用plinq設(shè)計串行多步操作
6.14 小結(jié)
第7章 visual studio 2010的任務(wù)調(diào)試能力
7.1 充分利用多顯示器的支持
7.2 理解并行任務(wù)調(diào)試器窗口
7.3 查看parallel stacks圖
7.4 跟蹤并發(fā)代碼
7.4.1 調(diào)試匿名方法
7.4.2 查看方法
7.4.3 在源代碼中查看線程
7.5 檢測死鎖
7.6 小結(jié)
第8章 線程池
8.1 探究任務(wù)的底層技術(shù)
8.2 理解新的clr 4線程池引擎
8.2.1 理解全局隊列
8.2.2 等待工作線程完成工作
8.2.3 跟蹤動態(tài)數(shù)目的工作線程
8.2.4 使用任務(wù)(而不是線程)將作業(yè)加入隊列
8.2.5 理解任務(wù)和線程池之間的關(guān)系
8.2.6 理解局部隊列和工作竊取算法
8.2.7 指定自定義的任務(wù)調(diào)度器
8.3 小結(jié)
第9章 異步編程模型
9.1 結(jié)合使用異步編程和任務(wù)
9.1.1 使用taskfactory.fromasync
9.1.2 編寫異步方法執(zhí)行結(jié)束之后的延續(xù)
9.1.3 合并多個并發(fā)異步操作的結(jié)果
9.1.4 執(zhí)行異步wpf ui更新
9.1.5 執(zhí)行異步windows forms ui更新
9.1.6 創(chuàng)建執(zhí)行eap操作的任務(wù)
9.1.7 使用taskcompletionsource
9.2 小結(jié)
第10章 并行測試和調(diào)優(yōu)
10.1 準(zhǔn)備并行測試
10.1.1 使用性能剖析功能
10.1.2 測量并發(fā)性
10.2 常見問題模式的解決方案
10.2.1 串行化的執(zhí)行
10.2.2 鎖爭用
10.2.3 鎖封護(hù)
10.2.4 申請超額
10.2.5 申請不足
10.2.6 分區(qū)問題
10.2.7 工作站垃圾回收開銷
10.2.8 使用服務(wù)器垃圾回收
10.2.9 i/o瓶頸
10.2.10 主線程過載
10.3 理解偽共享
10.4 小結(jié)
第11章 向量化、simd指令以及其他并行庫
11.1 理解simd和向量化
11.2 從mmx到sse4.x和avx
11.3 使用intel math kernellibrary
11.3.1 使用適用于多核的高度優(yōu)化的軟件函數(shù)
11.3.2 將基于任務(wù)的編程和外部優(yōu)化的庫混合使用
11.3.3 并行生成偽隨機(jī)數(shù)
11.4 使用intel integratedperformance primitives
11.5 小結(jié)
附錄a .net 4中與并行相關(guān)的類圖
附錄b 并發(fā)uml模型
附錄c parallel extensions extras
章節(jié)摘錄
版權(quán)頁:插圖:
編輯推薦
《C#并行編程高級教程:精通NET 4 Parallel Extensions》是由清華大學(xué)出版社出版的。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載