C#多執行緒編程實戰(原書第2版)

C#多執行緒編程實戰(原書第2版)

《C#多執行緒編程實戰》共分為11章,第1章介紹C#中基本的執行緒操作;第2章描述執行緒互動細節;第3章解釋執行緒池概念;第4章深入講解任務並行庫框架;第5章深入解釋C#6.0中的新功能—異步方法;第6章描述.NET框架中並行算法的標準數據結構;第7章深入講解並行LINQ基礎設施;第8章解釋如何以及何時使用Reactive Extensions框架;第9章深入講解異步I/O進程,包括檔案、網路及資料庫等場景;第10章針對常見的並行編程問題給出一些解決方案;第11章覆蓋基於Windows 10的編寫異步應用程式的場景。

基本介紹

  • 中文名:C#多執行緒編程實戰
  • 作者:(美) 易格恩·阿格佛溫(Eugene Agafonov)
  • 類別:計算機類
  • 譯者:黃博文
  • 出版社:機械工業出版社
  • 出版時間:2017年03月
  • 定價:59 元
  • 開本:16 開
  • 裝幀:精裝
  • ISBN:978-7-111-56102-6
內容簡介,目錄,

內容簡介

2005年,英特爾推出了其首款多核心CPU,從此計算機開始向不同的方向發展。低耗電量及多個計算核心變得比提高行計算(row computing)核心性能更重要。這也導致了編程範式的改變。現在我們需要學習如何有效地使用所有CPU核心來最最佳化性能。我們在編寫伺服器端應用程式時需要有效地利用多個CPU核心,甚至多台電腦來支持儘可能多的用戶。為了創建這樣的應用程式,你需要學習如何在程式中有效地使用多個CPU核心。如果你使用的是Microsoft .NET開發平台以及C#程式語言,那么本書將是一個編寫高性能、高回響性的應用程式的完美起點。
本書共分為11章,第1章介紹C#中基本的執行緒操作;第2章描述執行緒互動細節;第3章解釋執行緒池概念;第4章深入講解任務並行庫框架;第5章深入解釋C#6.0中的新功能—異步方法;第6章描述.NET框架中並行算法的標準數據結構;第7章深入講解並行LINQ基礎設施;第8章解釋如何以及何時使用Reactive Extensions框架;第9章深入講解異步I/O進程,包括檔案、網路及資料庫等場景;第10章針對常見的並行編程問題給出一些解決方案;第11章覆蓋基於Windows 10的編寫異步應用程式的場景。
計算機處理器發展為包含越來越多的核心的時期,多執行緒是創建可伸縮性、高效的、高回響性應用程式的關鍵因素。如果你沒有正確地使用多執行緒,它會導致難以捉摸的問題,需要你花費大量時間去解決。因此,現代應用程式開發人員必須對多執行緒擁有紮實的理解。
本書是一本通俗易懂的C#多執行緒編程指南,通過70多個容易理解的示例,循序漸進地講解C#6.0中的異步及並發編程,引導讀者了解C#多執行緒編程的多樣性。

目錄

第1章 執行緒基礎 1
1.1 簡介 1
1.2 使用C#創建執行緒 2
1.2.1 準備工作 2
1.2.2 實現方式 2
1.2.3 工作原理 4
1.3 暫停執行緒 4
1.3.1 準備工作 5
1.3.2 實現方式 5
1.3.3 工作原理 5
1.4 執行緒等待 6
1.4.1 準備工作 6
1.4.2 實現方式 6
1.4.3 工作原理 7
1.5 終止執行緒 7
1.5.1 準備工作 7
1.5.2 實現方式 7
1.5.3 工作原理 8
1.6 檢測執行緒狀態 8
1.6.1 準備工作 8
1.6.2 實現方式 8
1.6.3 工作原理 9
1.7 執行緒優先權 10
1.7.1 準備工作 10
1.7.2 實現方式 10
1.7.3 工作原理 12
1.8 前台執行緒和後台執行緒 12
1.8.1 準備工作 12
1.8.2 實現方式 12
1.8.3 工作原理 13
1.9 向執行緒傳遞參數 14
1.9.1 準備工作 14
1.9.2 實現方式 14
1.9.3 工作原理 16
1.9.4 更多信息 16
1.10 使用C#中的lock關鍵字 16
1.10.1 準備工作 16
1.10.2 實現方式 16
1.10.3 工作原理 18
1.11 使用Monitor類鎖定資源 19
1.11.1 準備工作 19
1.11.2 實現方式 19
1.11.3 工作原理 21
1.12 處理異常 21
1.12.1 準備工作 21
1.12.2 實現方式 22
1.12.3 工作原理 23
第2章 執行緒同步 24
2.1 簡介 24
2.2 執行基本的原子操作 25
2.2.1 準備工作 25
2.2.2 實現方式 25
2.2.3 工作原理 27
2.3 使用Mutex類 28
2.3.1 準備工作 28
2.3.2 實現方式 28
2.3.3 工作原理 29
2.4 使用SemaphoreSlim類 29
2.4.1 準備工作 29
2.4.2 實現方式 29
2.4.3 工作原理 30
2.4.4 更多信息 30
2.5 使用AutoResetEvent類 31
2.5.1 準備工作 31
2.5.2 實現方式 31
2.5.3 工作原理 32
2.6 使用ManualResetEventSlim類 32
2.6.1 準備工作 32
2.6.2 實現方式 33
2.6.3 工作原理 34
2.6.4 更多信息 34
2.7 使用CountDownEvent類 34
2.7.1 準備工作 34
2.7.2 實現方式 34
2.7.3 工作原理 35
2.8 使用Barrier類 35
2.8.1 準備工作 35
2.8.2 實現方式 36
2.8.3 工作原理 36
2.9 使用ReaderWriterLockSlim類 37
2.9.1 準備工作 37
2.9.2 實現方式 37
2.9.3 工作原理 39
2.10 使用SpinWait類 39
2.10.1 準備工作 39
2.10.2 實現方式 39
2.10.3 工作原理 41
第3章 使用執行緒池 42
3.1 簡介 42
3.2 線上程池中調用委託 43
3.2.1 準備工作 44
3.2.2 實現方式 44
3.2.3 工作原理 45
3.3 向執行緒池中放入異步操作 46
3.3.1 準備工作 46
3.3.2 實現方式 46
3.3.3 工作原理 47
3.4 執行緒池與並行度 48
3.4.1 準備工作 48
3.4.2 實現方式 48
3.4.3 工作原理 49
3.5 實現一個取消選項 50
3.5.1 準備工作 50
3.5.2 實現方式 50
3.5.3 工作原理 52
3.6 線上程池中使用等待事件處理器及逾時 52
3.6.1 準備工作 52
3.6.2 實現方式 52
3.6.3 工作原理 54
3.6.4 更多信息 54
3.7 使用計時器 54
3.7.1 準備工作 55
3.7.2 實現方式 55
3.7.3 工作原理 56
3.8 使用BackgroundWorker組件 56
3.8.1 準備工作 56
3.8.2 實現方式 56
3.8.3 工作原理 58
第4章 使用任務並行庫 60
4.1 簡介 60
4.2 創建任務 61
4.2.1 準備工作 62
4.2.2 實現方式 62
4.2.3 工作原理 63
4.3 使用任務執行基本的操作 63
4.3.1 準備工作 64
4.3.2 實現方式 64
4.3.3 工作原理 65
4.4 組合任務 65
4.4.1 準備工作 65
4.4.2 實現方式 65
4.4.3 工作原理 67
4.5 將APM模式轉換為任務 68
4.5.1 準備工作 68
4.5.2 實現方式 68
4.5.3 工作原理 70
4.6 將EAP模式轉換為任務 71
4.6.1 準備工作 71
4.6.2 實現方式 71
4.6.3 工作原理 72
4.7 實現取消選項 73
4.7.1 準備工作 73
4.7.2 實現方式 73
4.7.3 工作原理 74
4.8 處理任務中的異常 75
4.8.1 準備工作 75
4.8.2 實現方式 75
4.8.3 工作原理 76
4.8.4 更多信息 77
4.9 並行運行任務 77
4.9.1 準備工作 77
4.9.2 實現方式 77
4.9.3 工作原理 78
4.10 使用TaskScheduler配置任務的執行 79
4.10.1 準備工作 79
4.10.2 實現方式 79
4.10.3 工作原理 81
第5章 使用C# 6.0 83
5.1 簡介 83
5.2 使用await操作符獲取異步任務結果 85
5.2.1 準備工作 85
5.2.2 實現方式 85
5.2.3 工作原理 87
5.3 在lambda表達式中使用await操作符 87
5.3.1 準備工作 87
5.3.2 實現方式 87
5.3.3 工作原理 88
5.4 對連續的異步任務使用await操作符 89
5.4.1 準備工作 89
5.4.2 實現方式 89
5.4.3 工作原理 90
5.5 對並行執行的異步任務使用await操作符 91
5.5.1 準備工作 91
5.5.2 實現方式 91
5.5.3 工作原理 92
5.6 處理異步操作中的異常 93
5.6.1 準備工作 93
5.6.2 實現方式 93
5.6.3 工作原理 95
5.7 避免使用捕獲的同步上下文 95
5.7.1 準備工作 95
5.7.2 實現方式 96
5.7.3 工作原理 98
5.8 使用async void方法 99
5.8.1 準備工作 99
5.8.2 實現方式 99
5.8.3 工作原理 101
5.9 設計一個自定義的awaitable類型 102
5.9.1 準備工作 102
5.9.2 實現方式 102
5.9.3 工作原理 104
5.10 對動態類型使用await 105
5.10.1 準備工作 105
5.10.2 實現方式 105
5.10.3 工作原理 107
第6章 使用並發集合 109
6.1 簡介 109
6.2 使用ConcurrentDictionary 110
6.2.1 準備工作 111
6.2.2 實現方式 111
6.2.3 工作原理 112
6.3 使用ConcurrentQueue實現異步處理 113
6.3.1 準備工作 113
6.3.2 實現方式 113
6.3.3 工作原理 115
6.4 改變ConcurrentStack異步處理順序 115
6.4.1 準備工作 115
6.4.2 實現方式 115
6.4.3 工作原理 117
6.5 使用ConcurrentBag創建一個可擴展的爬蟲 117
6.5.1 準備工作 117
6.5.2 實現方式 118
6.5.3 工作原理 120
6.6 使用BlockingCollection進行異步處理 121
6.6.1 準備工作 121
6.6.2 實現方式 121
6.6.3 工作原理 123
第7章 使用PLINQ 124
7.1 簡介 124
7.2 使用Parallel類 125
7.2.1 準備工作 126
7.2.2 實現方式 126
7.2.3 工作原理 127
7.3 並行化LINQ查詢 127
7.3.1 準備工作 128
7.3.2 實現方式 128
7.3.3 工作原理 130
7.4 調整PLINQ查詢的參數 131
7.4.1 準備工作 131
7.4.2 實現方式 131
7.4.3 工作原理 132
7.5 處理PLINQ查詢中的異常 133
7.5.1 準備工作 133
7.5.2 實現方式 133
7.5.3 工作原理 135
7.6 管理PLINQ查詢中的數據分區 135
7.6.1 準備工作 135
7.6.2 實現方式 135
7.6.3 工作原理 137
7.7 為PLINQ查詢創建一個自定義的聚合器 138
7.7.1 準備工作 138
7.7.2 實現方式 138
7.7.3 工作原理 140
第8章 使用Reactive Extensions 142
8.1 簡介 142
8.2 將普通集合轉換為異步的可觀察集合 143
8.2.1 準備工作 143
8.2.2 實現方式 143
8.2.3 工作原理 145
8.3 編寫自定義的可觀察對象 146
8.3.1 準備工作 146
8.3.2 實現方式 146
8.3.3 工作原理 148
8.4 使用Subject 148
8.4.1 準備工作 148
8.4.2 實現方式 149
8.4.3 工作原理 151
8.5 創建可觀察的對象 151
8.5.1 準備工作 152
8.5.2 實現方式 152
8.5.3 工作原理 153
8.6 對可觀察的集合使用LINQ查詢 154
8.6.1 準備工作 154
8.6.2 實現方式 154
8.6.3 工作原理 155
8.7 使用Rx創建異步操作 156
8.7.1 準備工作 156
8.7.2 實現方式 156
8.7.3 工作原理 159
第9章 使用異步I/O 160
9.1 簡介 160
9.2 異步地使用檔案 162
9.2.1 準備工作 162
9.2.2 實現方式 162
9.2.3 工作原理 165
9.3 編寫一個異步的HTTP伺服器和客戶端 165
9.3.1 準備工作 165
9.3.2 實現方式 165
9.3.3 工作原理 167
9.4 異步運算元據庫 168
9.4.1 準備工作 168
9.4.2 實現方式 168
9.4.3 工作原理 171
9.5 異步調用WCF服務 171
9.5.1 準備工作 171
9.5.2 實現方式 171
9.5.3 工作原理 174
第10章 並行編程模式 176
10.1 簡介 176
10.2 實現惰性求值的共享狀態 177
10.2.1 準備工作 177
10.2.2 實現方式 177
10.2.3 工作原理 180
10.3 使用BlockingCollection實現並行管道 181
10.3.1 準備工作 181
10.3.2 實現方式 181
10.3.3 工作原理 186
10.4 使用TPL數據流實現並行管道 186
10.4.1 準備工作 186
10.4.2 實現方式 187
10.4.3 工作原理 189
10.5 使用PLINQ實現Map/Reduce模式 190
10.5.1 準備工作 190
10.5.2 實現方式 190
10.5.3 工作原理 194
第11章 更多信息 195
11.1 簡介 195
11.2 在通用Windows平台套用中使用計時器 196
11.2.1 準備工作 196
11.2.2 實現方式 197
11.2.3 工作原理 200
11.3 在通常的應用程式中使用WinRT 201
11.3.1 準備工作 201
11.3.2 實現方式 201
11.3.3 工作原理 203
11.4 在通用Windows平台套用中使用BackgroundTask 203
11.4.1 準備工作 204
11.4.2 實現方式 204
11.4.3 工作原理 209
11.5 在OS X上運行.NET核心應用程式 209
11.5.1 準備工作 210
11.5.2 實現方式 210
11.5.3 工作原理 211
11.6 在Ubuntu Linux上運行.NET核心應用程式 212
11.6.1 準備工作 212
11.6.2 實現方式 212
11.6.3 工作原理 214

相關詞條

熱門詞條

聯絡我們