幫助中心 | 我的帳號 | 關於我們

C#並行編程高級教程--精通.NET4Parallel Extensions

  • 作者:(美)希拉里|譯者:鄭思遙//房佩慈
  • 出版社:清華大學
  • ISBN:9787302273561
  • 出版日期:2012/01/01
  • 裝幀:平裝
  • 頁數:487
人民幣:RMB 68 元      售價:
放入購物車
加入收藏夾

內容大鋼
    您想淋漓盡致地發揮多核電腦系統的處理能力嗎?希拉里編著的《C#並行編程高級教程:精通.NET 4 Parallel Extensions》將幫助您實現這一夙願。《C#並行編程高級教程:精通.NET 4 Parallel Extensions》濃墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地創建基於任務的並行應用程序,詳細講述最新的單指令、多數據流指令和向量化等並行編程技術,介紹現代並行庫,討論如何珠聯璧合地使用高級Intel工具與C#,並指導您巧妙使用新引入的輕型協調結構來開發自己的解決方案並解決最棘手的併發編程問題。
    《C#並行編程高級教程:精通.NET 4 Parallel Extensions》的主要內容包括:介紹如何基於新Task Parallel Library和.NET 4設計穩定的可擴展並行應用程序;講解命令式數據並行、命令式任務並行、併發集合以及協調數據結構;描述PLINQ高級聲明式數據並行;討論如何使用新的Visual Studio 2010並行調試功能來調試匿名方法、任務和線程;演示如何對數據源進行分區,以便在不同任務和線程之間合理分配工作負荷。

作者介紹
(美)希拉里|譯者:鄭思遙//房佩慈
    從8歲起就開始使用電腦了。在20世紀80年代初,他開始在傳奇的TexasTI-99/4A和Commodore64家用電腦上編寫程序。他作為一名優秀畢業生在UADE大學獲得了學士學位,然後又在UCEMA大學憑借出色的畢業論文獲得了工商管理碩士學位。     自1997年以來,Gaston在並行編程、多處理器和多核處理器領域進行了深入研究。在設計和開發各種類型複雜的利用多核處理能力的並行解決方案方面,他有著14年的豐富經驗,後來,他開始通過C#和.NETFramework編寫並行解決方案。

目錄
第1章 基於任務的程序設計 1
  1.1 使用共享內存的多核系統 2
    1.1.1 共享內存多核系統與分散式內存系統之間的區別 3
    1.1.2 並行程序設計和多核程序設計 4
  1.2 理解硬體線程和軟體線程 5
  1.3 理解Amdahl法則 8
  1.4 考慮Gustafson法則 11
  1.5 使用輕量級併發模型 14
  1.6 創建成功的基於任務的設計 15
    1.6.1 以併發的思想指導設計 16
    1.6.2 理解交錯併發、併發和並行之間的區別 17
    1.6.3 並行化任務 18
    1.6.4 盡量減少臨界區 18
    1.6.5 理解多核並行程序的設計原則 19
  1.7 為NUMA架構和更高的可擴展性做好準備 20
  1.8 判斷是否適合併行化 24
  1.9 小結 25
第2章 命令式數據並行 27
  2.1 載入並行任務 27
    2.1.1 System.Threading.Tasks.Parallel類 29
    2.1.2 Parallel.Invoke 30
  2.2 將串列代碼轉換為並行代碼 37
    2.2.1 檢測可並行化的熱點 37
    2.2.2 測量並行執行的加速效果 40
    2.2.3 理解併發執行 42
  2.3 循環並行化 43
    2.3.1 Parallel.For 43
    2.3.2 Parallel.ForEach 49
    2.3.3 從並行循環中退出 56
  2.4 指定並行度 62
    2.4.1 ParallelOptions 63
    2.4.2 計算硬體線程 65
    2.4.3 邏輯內核並不是物理內核 66
  2.5 通過甘特圖檢測臨界區 67
  2.6 小結 68
第3章 命令式任務並行 69
  3.1 創建和管理任務 70
    3.1.1 System.Threading.Tasks.Task 71
    3.1.2 理解Task狀態和生命周期 72
    3.1.3 通過使用任務來對代碼進行並行化 74
    3.1.4 等待任務完成 80
    3.1.5 忘記複雜的線程 81
    3.1.6 通過取消標記取消任務 82
    3.1.7 從任務返回值 88
    3.1.8 TaskCreationOptions 90
    3.1.9 通過延續串聯多個任務 90
    3.1.10 編寫適應併發和並行的代碼 95
  3.2 小結 96
第4章 併發集合 97
  4.1 理解併發集合提供的功能 98

    4.1.1 System.Collections.Concurrent 100
    4.1.2 ConcurrentQueue 101
    4.1.3 理解並行的生產者-消費者模式 104
    4.1.4 ConcurrentStack 116
    4.1.5 將使用數組和不安全集合的代碼轉換為使用併發集合的代碼 121
    4.1.6 ConcurrentBag 122
    4.1.7 IProducerConsumerCollection 129
    4.1.8 BlockingCollection 129
    4.1.9 ConcurrentDictionary 143
  4.2 小結 147
第5章 協調數據結構 149
  5.1 通過汽車和車道理解併發難題 150
    5.1.1 非預期的副作用 150
    5.1.2 競爭條件 151
    5.1.3 死鎖 152
    5.1.4 使用原子操作的無鎖演算法 153
    5.1.5 使用本地存儲的無鎖演算法 154
  5.2 理解新的同步機制 156
  5.3 使用同步原語 157
    5.3.1 通過屏障同步併發任務 158
    5.3.2 屏障和ContinueWhenAll 164
    5.3.3 在所有的參與者任務中捕捉異常 165
    5.3.4 使用超時 166
    5.3.5 使用動態數目的參與者 171
  5.4 使用互斥鎖 172
    5.4.1 使用Monitor 176
    5.4.2 使用鎖超時 177
    5.4.3 將代碼重構為避免使用鎖 180
  5.5 將自旋鎖用作互斥鎖原語 183
    5.5.1 使用超時 186
    5.5.2 使用基於自旋的等待 187
    5.5.3 自旋和處理器出讓 190
    5.5.4 使用volatile修飾符 193
  5.6 使用輕量級的手動重置事件 194
    5.6.1 使用ManualResetEventSlim進行自旋和等待 194
    5.6.2 使用超時和取消 199
    5.6.3 使用ManualResetEvent 203
  5.7 限制資源的併發訪問 204
    5.7.1 使用SemaphoreSlim 205
    5.7.2 使用超時和取消 209
    5.7.3 使用 Semaphore 209
  5.8 通過CountdownEvent簡化動態fork和join場景 211
  5.9 使用原子操作 215
  5.10 小結 220
第6章 PLINQ:聲明式數據並行 221
  6.1 從LINQ轉換到PLINQ 222
    6.1.1 ParallelEnumerable及其AsParallel方法 224
    6.1.2 AsOrdered和orderby子句 225
  6.2 指定執行模式 228
  6.3 理解PLINQ中的數據分區 229

  6.4 通過PLINQ執行歸約操作 234
  6.5 創建自定義的PLINQ聚合函數 235
  6.6 併發PLINQ任務 240
  6.7 取消PLINQ 243
  6.8 指定所需的並行度 245
    6.8.1 WithDegreeOfParallelism 245
    6.8.2 測量可擴展性 247
  6.9 使用ForAll 249
    6.9.1 foreach和ForAll的區別 250
    6.9.2 測量可擴展性 251
  6.10 通過WithMergeOptions配置返回結果的方式 253
  6.11 處理PLINQ拋出的異常 255
  6.12 使用PLINQ執行MapReduce演算法 257
  6.13 使用PLINQ設計串列多步操作 259
  6.14 小結 261
第7章 Visual Studio 2010的任務調試能力 263
  7.1 充分利用多顯示器的支持 264
  7.2 理解並行任務調試器窗口 267
  7.3 查看Parallel Stacks圖 273
  7.4 跟蹤併發代碼 280
    7.4.1 調試匿名方法 288
    7.4.2 查看方法 290
    7.4.3 在源代碼中查看線程 292
  7.5 檢測死鎖 294
  7.6 小結 300
第8章 線程池 301
  8.1 探究任務的底層技術 301
  8.2 理解新的CLR 4線程池引擎 303
    8.2.1 理解全局隊列 303
    8.2.2 等待工作線程完成工作 313
    8.2.3 跟蹤動態數目的工作線程 319
    8.2.4 使用任務(而不是線程)將作業加入隊列 323
    8.2.5 理解任務和線程池之間的關係 326
    8.2.6 理解局部隊列和工作竊取演算法 330
    8.2.7 指定自定義的任務調度器 335
  8.3 小結 340
第9章 非同步編程模型 341
  9.1 結合使用非同步編程和任務 342
    9.1.1 使用TaskFactory.FromAsync 343
    9.1.2 編寫非同步方法執行結束之後的延續 348
    9.1.3 合併多個併發非同步操作的結果 349
    9.1.4 執行非同步WPF UI更新 351
    9.1.5 執行非同步Windows Forms UI更新 358
    9.1.6 創建執行EAP操作的任務 365
    9.1.7 使用TaskCompletionSource 373
  9.2 小結 377
第10章 並行測試和調優 379
  10.1 準備並行測試 379
    10.1.1 使用性能剖析功能 383
    10.1.2 測量併發性 385

  10.2 常見問題模式的解決方案 394
    10.2.1 串列化的執行 395
    10.2.2 鎖爭用 397
    10.2.3 鎖封護 398
    10.2.4 申請超額 401
    10.2.5 申請不足 404
    10.2.6 分區問題 406
    10.2.7 工作站垃圾回收開銷 408
    10.2.8 使用伺服器垃圾回收 411
    10.2.9 I/O瓶頸 412
    10.2.10 主線程過載 413
  10.3 理解偽共享 416
  10.4 小結 419
第11章 向量化、SIMD指令以及其他並行庫 421
  11.1 理解SIMD和向量化 421
  11.2 從MMX到SSE4.X和AVX 423
  11.3 使用Intel Math KernelLibrary 425
    11.3.1 使用適用於多核的高度優化的軟體函數 433
    11.3.2 將基於任務的編程和外部優化的庫混合使用 434
    11.3.3 並行生成偽隨機數 434
  11.4 使用Intel IntegratedPerformance Primitives 439
  11.5 小結 445
附錄A .NET 4中與並行相關的類圖 447
附錄B 併發UML模型 461
附錄C Parallel Extensions Extras 469

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032