出版時(shí)間:2012-4 出版社:清華大學(xué)出版社 作者:(美)坎貝爾 等著,鄒雪梅,李岸 譯 頁(yè)數(shù):214
Tag標(biāo)簽:無(wú)
內(nèi)容概要
《設(shè)計(jì)模式:NET并行編程》結(jié)合大量的項(xiàng)目實(shí)踐,介紹了與并行編程相關(guān)的概念、方法和應(yīng)用。本書共7章:第1章主要介紹并行編程的基本概念與并行計(jì)算的基礎(chǔ)理論,第2章主要介紹并行循環(huán)的知識(shí),第3章介紹并行任務(wù)處理,第4章闡述并行合并計(jì)算的機(jī)理,第5章介紹future模式,第6章在前文的基礎(chǔ)上深入探討動(dòng)態(tài)并行任務(wù)機(jī)制,第7章介紹并行編程的流水線機(jī)制。
《設(shè)計(jì)模式:NET并行編程》適用于在.netframework上編寫托管代碼的程序員,包括在visualc#、visualbasic以及visualf#上編寫代碼的程序員。本書不假定讀者具有并行編程技術(shù)的預(yù)備知識(shí)。不過(guò),讀者需要熟悉c#的特征,如委托、lambda表達(dá)式、泛型以及語(yǔ)言集成查詢(linq)表達(dá)式等。讀者還至少應(yīng)該對(duì)進(jìn)程和線程的概念有基本的了解。
作者簡(jiǎn)介
作者:(美)Colin Campbell Ralph Johnson Ade Miller Stephen Toub 譯者:曹澤文 鄒雪梅 李岸 Colin Campbell是Model—Based Software Testing and Analysis in C#的合著者之一,他發(fā)表過(guò)數(shù)篇有關(guān)軟件分析的論文。他是西雅圖的Modeled Computation LLC的創(chuàng)始人和負(fù)責(zé)人。 Ralph Johnson是伊利諾伊大學(xué)的研究副教授。他是Design Patterns的四個(gè)合著者之一,并且是開發(fā)了第一個(gè)自動(dòng)重構(gòu)工具Smalltalk Refactoring Browser的項(xiàng)目組的組長(zhǎng)。近幾年來(lái),他一直致力于記載并行編程的模式。 Ade Miller是微軟的patterns & practices組的主力開發(fā),他在這里管理了數(shù)個(gè)敏捷團(tuán)隊(duì),這些團(tuán)隊(duì)為微軟的客戶提供項(xiàng)目上的實(shí)用指導(dǎo)。他的首要興趣在于并行計(jì)算和敏捷軟件開發(fā)實(shí)踐。 Stephen Toub在微軟的并行計(jì)算平臺(tái)團(tuán)隊(duì)中工作。他致力于為.NET和Visual Studio設(shè)計(jì)和開發(fā)下—代并發(fā)和并行編程模型。
書籍目錄
第1章 導(dǎo)論
1.1 潛在并行性的重要性
1.2 分解、仂、調(diào)和可擴(kuò)展共享
1.2.1 了解任務(wù)
1.2.2 協(xié)調(diào)任務(wù)
1.2.3 數(shù)據(jù)的可擴(kuò)展共享
1.2.4 設(shè)計(jì)方法
1.3 選擇恰當(dāng)?shù)哪J?br />1.4 關(guān)于術(shù)語(yǔ)
1.5 并行性的極限
1.6 一些技巧
1.7 練習(xí)
1.8 擴(kuò)展閱讀
第2章 并行循環(huán)
2.1 基礎(chǔ)知識(shí)
2.1.1 并行for循環(huán)
2.1.2 并行foreach循環(huán)
2.1.3 并行l(wèi)inq(plinq)
2.1.4 預(yù)期
2.2 示例
2.2.1 信貸審查的順序版本示例
2.2.2 使用parallel.foreach的信貸審查示例
2.2.3 plinq信貸審查示例
2.2.4 性能比較
2.3 變化形式
2.3.1 盡早中斷循環(huán)
2.3.2 外部循環(huán)取消
2.3.3 異常處理
2.3.4 小循環(huán)體的特殊處理
2.3.5 控制并行度
2.3.6 在循環(huán)體中使用局部任務(wù)狀態(tài)
2.3.7 對(duì)并行循環(huán)使用自定義的任務(wù)調(diào)度程序
2.4 反模式
2.4.1 步長(zhǎng)不為一
2.4.2 隱藏的循環(huán)體依賴
2.4.3 少量迭代的小循環(huán)體
2.4.4 處理器的超額申請(qǐng)和申請(qǐng)不足
2.4.5 混合parallel類和plinq
2.4.6 輸入枚舉中的重復(fù)
2.5 設(shè)計(jì)說(shuō)明
2.5.1 自適應(yīng)分區(qū)
2.5.2 自適應(yīng)并發(fā)
2.5.3 支持嵌套循環(huán)和服務(wù)器應(yīng)用程序
2.6 相關(guān)模式
2.7 練習(xí)
2.8 擴(kuò)展閱讀
第3章 并行任務(wù)
3.1 基礎(chǔ)知識(shí)
3.2 示例
3.3 變化形式
3.3.1 取消任務(wù)
3.3.2 處理異常
3.3.3 等待第一個(gè)任務(wù)完成
3.3.4 推測(cè)執(zhí)行
3.3.5 使用自定義的調(diào)度方式創(chuàng)建任務(wù)
3.4 反模式
3.4.1 閉包捕獲的變量
3.4.2 清理任務(wù)所需要的資源
3.4.3 避免撤銷線程
3.5 設(shè)計(jì)說(shuō)明
3.5.1 任務(wù)和線程
3.5.2 任務(wù)生命周期
3.5.3 編寫自定義的任務(wù)調(diào)度程序
3.5.4 未觀測(cè)到的任務(wù)異常
3.5.5 數(shù)據(jù)并行性和任務(wù)并行性之間的關(guān)系
3.6 默認(rèn)任務(wù)調(diào)度程序
3.6.1 線程池
3.6.2 分散管理的調(diào)度技術(shù)
3.6.3 workstealing策略
3.6.4 全局隊(duì)列中的頂層任務(wù)
3.6.5 局部隊(duì)列中的子任務(wù)
3.6.6 子任務(wù)的內(nèi)聯(lián)執(zhí)行
3.6.7 線程注入
3.6.8 繞過(guò)線程池
3.7 練習(xí)
3.8 擴(kuò)展閱讀
第4章 并行合并計(jì)算
4.1 基礎(chǔ)知識(shí)
4.2 示例
4.3 變化形式
4.3.1 使用并行循環(huán)進(jìn)行合并計(jì)算
4.3.2 使用范圍分割器進(jìn)行合并計(jì)算
4.3.3 使用帶有范圍選擇的plinq合并計(jì)算
4.4 設(shè)計(jì)說(shuō)明
4.5 相關(guān)的模式
4.6 練習(xí)
4.7 擴(kuò)展閱讀
第5章 future模式
5.1 基礎(chǔ)知識(shí)
5.1.1 future
5.1.2 延續(xù)任務(wù)
5.2 示例:adatum金融儀表板
5.2.1 業(yè)務(wù)對(duì)象
5.2.2 分析引擎
5.2.3 視圖和視圖模型
5.3 變化形式
5.3.1 取消future和延續(xù)任務(wù)
5.3.2 擁有多個(gè)先行任務(wù)的情況
5.3.3 使用.net異步調(diào)用和future
5.3.4 消除瓶頸
5.3.5 運(yùn)行時(shí)修改圖
5.4 設(shè)計(jì)說(shuō)明
5.4.1 分解成future和延續(xù)任務(wù)
5.4.2 函數(shù)式風(fēng)格
5.5 相關(guān)的模式
5.5.1 流水線模式
5.5.2 主/從(master/worker)模式
5.5.3 動(dòng)態(tài)任務(wù)并行模式
5.5.4 離散事件模式
5.6 練習(xí)
5.7 擴(kuò)展閱讀
第6章 動(dòng)態(tài)任務(wù)并行
6.1 基礎(chǔ)
6.2 示例
6.3 變化形式
6.3.1 while-not-empty并行
6.3.2 任務(wù)鏈與父子任務(wù)
6.4 設(shè)計(jì)說(shuō)明
6.5 練習(xí)
6.6 擴(kuò)展閱讀
第7章 流水線
7.1 基礎(chǔ)
7.2 示例
7.2.1 順序圖像處理
7.2.2 圖像流水線
7.2.3 運(yùn)行特性
7.3 變化形式
7.3.1 取消流水線
7.3.2 處理流水線異常
7.3.3 利用多個(gè)生產(chǎn)者實(shí)現(xiàn)負(fù)載平衡
7.3.4 流水線和流
7.3.5 異步流水線
7.4 反模式
7.4.1 線程饑餓
7.4.2 阻塞集合無(wú)窮等待
7.4.3 忘記getconsumingenumerable()方法
7.4.4 采用其他生產(chǎn)者/消費(fèi)者集合
7.5 設(shè)計(jì)說(shuō)明
7.6 相關(guān)模式
7.7 練習(xí)
7.8 擴(kuò)展閱讀
附錄a改寫面向?qū)ο竽J?br />附錄b調(diào)試和分析并行應(yīng)用程序
附錄c技術(shù)概覽
術(shù)語(yǔ)表
參考文獻(xiàn)
章節(jié)摘錄
版權(quán)頁(yè): 插圖: CPU計(jì)量器能夠說(shuō)明問(wèn)題。例如,一個(gè)內(nèi)核的使用率為100%,而其他內(nèi)核都是空閑的?;蛘邞?yīng)用程序是計(jì)算密集型的(即要占用大量CPU資源),但你只使用了多核系統(tǒng)的一部分計(jì)算能力。如何解決這種問(wèn)題呢?簡(jiǎn)而言之,答案就是并行編程。像所有程序員一樣,你可能熟諳編寫順序代碼之道,但你會(huì)發(fā)現(xiàn)現(xiàn)在它不再滿足你的性能要求了。要想有效地使用系統(tǒng)的CPU資源,必須把應(yīng)用程序分割成塊,使各塊在同一時(shí)間運(yùn)行。 這說(shuō)起來(lái)容易做起來(lái)難。并行編程被譽(yù)為專家領(lǐng)域和敏感地帶,很難重現(xiàn)軟件缺陷。每個(gè)程序員似乎都有一些關(guān)于并行編程的趣事,可能由于某個(gè)神秘的錯(cuò)誤,程序并沒有像預(yù)期那樣運(yùn)行。 在編寫并行程序時(shí),這些故事應(yīng)該能幫助你正視面臨的問(wèn)題和困難。幸運(yùn)的是,已經(jīng)有人提供了一些幫助。.NET Framework 4引入了一種新的編程模型,大大簡(jiǎn)化了并行工作。后臺(tái)是復(fù)雜算法的支持庫(kù),在多核架構(gòu)中動(dòng)態(tài)分配計(jì)算。此外,Visual Studio 2010還包含調(diào)試和分析工具,以支持新的并行編程模型。
編輯推薦
《設(shè)計(jì)模式:NET并行編程》內(nèi)容豐富,幾乎涵蓋了并行編程的各個(gè)方面。一方面,本書既有對(duì)并行計(jì)算理論的基礎(chǔ)原理及架構(gòu)的闡述,也有對(duì)動(dòng)態(tài)任務(wù)并行機(jī)制以及流水線技術(shù)的深入探討,更重要的是本書每一章都有豐富的實(shí)例及示例代碼,這有助于讀者深入了解其原理與應(yīng)用。另一方面,本書并非只是一本純理論的書籍,因此真正善于學(xué)習(xí)的讀者,應(yīng)該適當(dāng)?shù)赝瓿梢恍罢n后練習(xí)”。對(duì)本書示例進(jìn)行自我學(xué)習(xí)和探索,我相信您能夠從本書獲得寶貴經(jīng)驗(yàn)?!对O(shè)計(jì)模式:NET并行編程》適用于在.NET Framework上編寫托管代碼的程序員,包括在Visual C#、Visual Basic以及Visual F#上編寫代碼的程序員。
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載