Visual C++並行編程實戰

Visual C++並行編程實戰

《VisualC++並行編程實戰》是2012年出版的圖書,作者是(美)ColinCampbell;AdeMiller。

基本介紹

  • 書名:Visual C++並行編程實戰
  • 作者:(美)Colin Campbell; Ade Miller
  • ISBN:978-7-111-38806-7
  • 出版時間:2012-08
基本信息,內容簡介,作者簡介,目錄,

基本信息

版次:1/1
開本:16
定價:¥59.00

內容簡介

在當前多核體系結構中,習慣於編寫所有程式設計師熟悉的那種串列化代碼顯然已無法滿足用戶的性能需求,並行編程將是提升系統性能的最簡單、最直接的途徑。
並行編程一直被認為只有專家才能涉足的領域,同時也經常被視為一個雷區,其中隱藏著各種難以重現的、詭異的軟體缺陷。幸運的是,並行模式庫(PPL)和異步代理庫的出現將我們引入了一種全新的並行編程模型,這大大地簡化了編寫並行程式的工作。當然,這一切要歸功於一系列精緻而複雜的算法,它們能夠很好地適應多核體系結構中的動態分散式計算。
通過學習本書介紹的設計模式,讀者可以極大地改善應用程式在多核計算機上的性能。本書介紹的這些模式不僅適用於現階段的硬體環境,同時也方便日後擴展使用。隨著計算機並行架構的不斷提升,應用程式的表現也會越來越好。

作者簡介

Colin Campbell 資深並發編程專家,Model Computation公司的創始人,與人合著有《Model-Based Software Testing and Analysis in C#》、《Parallel Programming with Microsoft .NET》等經典著作,還發表了若干篇針對軟體分析(嚴格數學方法)的學術論文。
Ade Miller 資深並發編程專家,微軟研究院首席軟體開發工程師,擔任基於Windows HPC Server團隊的項目。

目錄

作者簡介
譯者序
推薦序一
推薦序二
前言 1
致謝 7
第1章 引言 9
1.1 潛在並行化的重要意義 10
1.2 分解、協調、可擴展性共享 11
1.2.1 理解任務 12
1.2.2 協調任務 13
1.2.3 可擴展性數據共享 13
1.2.4 設計方法 14
1.3 選擇正確的設計模式 15
1.4 關於術語 16
1.5 並行的局限 16
1.6 一些建議 18
1.7 練習題 19
1.8 更多資源 19
第2章 並行循環 21
2.1 基本用法 22
2.1.1 並行版的for循環 22
2.1.2 parallel_for_each 23
2.1.3 期望為何 24
2.2 實例示範 26
2.2.1 串列版的Credit Review 26
2.2.2 parallel_for_each版的Credit Review 27
2.2.3 性能對比 27
2.3 模式變體 28
2.3.1 提前退出循環 28
2.3.2 異常處理 29
2.3.3 小型循環體的特殊處理 29
2.3.4 並行度控制 30
2.4 反面模式 31
2.4.1 隱性循環體依賴 31
2.4.2 少量疊代的小循環體 31
2.4.3 重複輸入性枚舉 32
2.4.4 基於協同性阻塞的交叉調度 32
2.5 相關模式 32
2.6 練習題 32
2.7 補充閱讀 33
第3章 並行任務 35
3.1 基本用法 36
3.2 實例示範 38
3.3 模式變體 39
3.3.1 基於協同性阻塞的任務協調 40
3.3.2 取消一個任務組 42
3.3.3 異常處理 44
3.3.4 預測性執行 44
3.4 反面模式 46
3.4.1 閉包中的變數捕獲 46
3.4.2 計畫外的取消狀態傳遞 47
3.4.3 同步化成本 48
3.5 設計注意事項 48
3.5.1 任務組調用約定 48
3.5.2 任務與執行緒 48
3.5.3 如何調度任務 49
3.5.4 結構化任務組及任務處理 49
3.5.5 輕量級任務 50
3.6 練習題 50
3.7 補充閱讀 50
第4章 並行聚合 53
4.1 基本用法 54
4.2 實例示範 57
4.3 模式變體 63
4.3.1 基於小型循環體的考慮 63
4.3.2 Combinable對象的其他用處 63
4.4 設計注意事項 63
4.5 相關模式 65
4.6 練習題 65
4.7 補充閱讀 66
第5章 Future 69
5.1 基本用法 71
5.2 實例示範:Adatum金融儀錶盤 73
5.2.1 業務對象 74
5.2.2 分析引擎 75
5.3 模式變體 78
5.3.1 取消Future對象 78
5.3.2 消除瓶頸 78
5.3.3 在運行時修改任務圖 79
5.4 設計注意事項 79
5.4.1 分解到future對象中去 79
5.4.2 函式式風格 79
5.5 相關模式 80
5.5.1 管道模式 80
5.5.2 Master/Worker模式 80
5.5.3 動態任務並行化模式 80
5.5.4 離散事件模式 80
5.6 練習題 81
第6章 動態任務並行化 83
6.1 基本用法 83
6.2 實例示範 84
6.3 模式變體 87
6.3.1 非空while循環體的並行化 87
6.3.2 在掛起等待環境中添加任務 89
6.4 練習題 90
6.5 補充閱讀 90
第7章 管道 93
7.1 訊息塊類型概述 94
7.2 基本用法 94
7.3 實例示範 101
7.3.1 串列化的圖形處理 101
7.3.2 圖形管道 102
7.3.3 性能特徵 104
7.4 模式變體 106
7.4.1 異步管道 106
7.4.2 管道中的取消操作 109
7.4.3 管道中的異常處理 110
7.4.4 多生產者作用下的負載平衡 111
7.4.5 管道與流的關係 114
7.5 反面模式 114
7.5.1 在管道各階段之間進行大量的數據拷貝 114
7.5.2 管道階段中的工作量過小 114
7.5.3 在訊息傳遞時忘記使用隔離技術 114
7.5.4 無限期的等待 114
7.5.5 無限制的佇列增長 115
7.5.6 更多信息 115
7.6 設計注意事項 115
7.7 關聯模式 116
7.8 練習題 116
7.9 補充閱讀 116
附錄A 任務調度器與資源管理器 117
附錄B 並行應用程式的調試與分析 139
附錄C 技術總覽 153
術語表 157

相關詞條

熱門詞條

聯絡我們