C#多線程編程實戰 ( 簡體 字) |
作者:(美) Eugene Agafonov 著 | 類別:1. -> 程式設計 -> .NET -> C# |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 41055 詢問書籍請說出此書號!【缺書】 【不接受訂購】 |
出版日:3/1/2015 |
頁數:197 |
光碟數:0 |
|
站長推薦:  |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
【不接受訂購】 |
ISBN:9787111493488 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:典型的個人計算機的CPU還只有一個計算核心,并且功耗足以煎熟雞蛋。2005年,英特爾推出了其首款多核心CPU,從此計算機開始向不同的方向發展。低耗電量及多個計算核心變得比提高行計算(row computing)核心性能更重要。這也導致了編程范式的改變。現在我們需要學習如何有效地使用所有CPU核心來最優化性能,并同時通過在特定時間只運行需要的程序來節省電池電量。除此之外,我們在編寫服務器端應用程序時需要有效地利用多個CPU核心,甚至多臺計算機來支持盡可能多的用戶。
為了創建這樣的應用程序,你需要學習如何在程序中有效地使用多個CPU核心。如果你使用的是Microsoft .NET開發平臺以及C#編程語言,那么本書將是一個編寫高性能、高響應性的應用程序的完美起點。
本書的目的是給你提供C#中多線程以及并行編程的詳盡指導。我們將從基本概念開始,每章主題比前一章都有所拔高,最后展示現實世界中的并行編程模式以及Windows商店應用示例。
本書內容
第1章介紹了C#中基本的線程操作。本章解釋了什么是線程,使用線程的優缺點,以及與線程相關的其他重要方面。
第2章描述了線程交互細節。你將了解為何我們需要協調線程,以及協調組織線程的不同方式。
第3章解釋了線程池概念。本章展示了如何使用線程池,如何執行異步操作,以及使用線程池的好的和不好的實踐。
第4章深入講解了任務并行庫(Task Parallel Library,TPL)框架。本章講述了TPL的所有重要方面,包括任務組合、異常管理及取消操作等。
第5章深入解釋了C# 5.0中的新功能——異步方法。你將了解async和await關鍵字,如何在不同的場景中使用它們,以及await底層工作機制。
第6章描述了.NET框架中并行算法的標準數據結構,并為每種數據結構展示了示例編程場景。
第7章深入講解了并行LINQ基礎設施。本章講述了任務和數據并行度,并行化LINQ查詢,調整并行選項,分割查詢,集合并行查詢結果等內容。
第8章解釋了如何以及何時使用Reactive Extensions框架。你將學習如何組合事件,如何對事件序列執行LINQ查詢等。
第9章深入講解了異步I/O進程,包括文件、網絡及數據庫等場景。
第10章列出了針對常見的并行編程問題的解決方案。
第11章覆蓋了基于Windows 8的編寫異步應用程序的場景。你將學習如何使用Windows 8異步API,以及如何在Windows商店應用中完成后臺工作。
準備事項
我們需要 Windows桌面版本的Microsoft Visual Studio Express 2012來完成大多數章節的學習。第11章中的小節還需要Windows 8操作系統和Visual Studio Express 2012編譯Windows商店應用。
讀者對象
本書的讀者對象為沒有或只有少量多線程及異步和并發編程背景的C#開發人員。本書涵蓋了C#和.NET生態系統中從基礎概念到復雜編程模式及算法的很多與多線程相關的主題。
下載示例代碼
本書的示例代碼可登錄華章網站(http://www.hzbook.com)中的本書頁面下載。 |
內容簡介:簡介 2005年,英特爾推出了其首款多核心CPU,從此計算機開始向不同的方向發展。低耗電量及多個計算核心變得比提高行計算(row computing)核心性能更重要。這也導致了編程范式的改變。現在我們需要學習如何有效地使用所有CPU核心來優化性能。我們在編寫服務器端應用程序時需要有效地利用多個CPU核心,甚至多臺計算機來支持盡可能多的用戶。為了創建這樣的應用程序,你需要學習如何在程序中有效地使用多個CPU核心。如果你使用的是Microsoft .NET開發平臺以及C#編程語言,那么本書將是一個編寫高性能、高響應性的應用程序的完美起點。 本書共分為11章,第1章介紹C#中基本的線程操作;第2章描述線程交互細節;第3章解釋線程池概念;第4章深入講解任務并行庫框架;第5章深入解釋C#5.0中的新功能——異步方法;第6章描述.NET框架中并行算法的標準數據結構;第7章深入講解并行LINQ基礎設施;第8章解釋如何以及何時使用Reactive Extensions框架;第9章深入講解異步I/O進程,包括文件、網絡及數據庫等場景;第10章針對常見的并行編程問題給出一些解決方案;第11章講述編寫基于Windows 8的異步應用程序的場景。
在計算機處理器發展為包含越來越多的核心的時期,多線程是創建可伸縮性、高效的、高響應性應用程序的關鍵因素。如果你沒有正確地使用多線程,它會導致難以捉摸的問題,需要你花費大量時間去解決。因此,現代應用程序開發人員必須深入理解多線程。 本書是一本通俗易懂的C#多線程編程指南,通過70多個容易理解的示例,循序漸進地講解C#5.0中的異步及并發編程,引導讀者了解Windows下C#多線程編程的多樣性。
通過閱讀本書,你將學到: 使用原始線程、異步線程,以及協調它們工作 使用任務并行庫設計自己的異步API 使用C# 5.0異步語言特性 使用I/O線程提高服務器應用程序性能 使用PLINQ并行化LINQ查詢 使用Windows 8異步API 使用Reactive Extensions運行異步操作并管理選項 |
目錄:前 言
第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 工作原理 11
1.8 前臺線程和后臺線程 12
1.8.1 準備工作 12
1.8.2 實現方式 12
1.8.3 工作原理 13
1.9 向線程傳遞參數 13
1.9.1 準備工作 13
1.9.2 實現方式 13
1.9.3 工作原理 15
1.9.4 更多信息 15
1.10 使用C#中的lock關鍵字 16
1.10.1 準備工作 16
1.10.2 實現方式 16
1.10.3 工作原理 18
1.11 使用Monitor類鎖定資源 18
1.11.1 準備工作 18
1.11.2 實現方式 18
1.11.3 工作原理 20
1.12 處理異常 20
1.12.1 準備工作 20
1.12.2 實現方式 21
1.12.3 工作原理 22
第2章 線程同步 23
2.1 簡介 23
2.2 執行基本的原子操作 24
2.2.1 準備工作 24
2.2.2 實現方式 24
2.2.3 工作原理 26
2.3 使用Mutex類 27
2.3.1 準備工作 27
2.3.2 實現方式 27
2.3.3 工作原理 27
2.4 使用SemaphoreSlim類 28
2.4.1 準備工作 28
2.4.2 實現方式 28
2.4.3 工作原理 29
2.4.4 更多信息 29
2.5 使用AutoResetEvent類 29
2.5.1 準備工作 30
2.5.2 實現方式 30
2.5.3 工作原理 31
2.6 使用ManualResetEventSlim類 31
2.6.1 準備工作 31
2.6.2 實現方式 31
2.6.3 工作原理 32
2.6.4 更多信息 33
2.7 使用CountDownEvent類 33
2.7.1 準備工作 33
2.7.2 實現方式 33
2.7.3 工作原理 34
2.8 使用Barrier類 34
2.8.1 準備工作 34
2.8.2 實現方式 34
2.8.3 工作原理 35
2.9 使用ReaderWriterLockSlim類 35
2.9.1 準備工作 36
2.9.2 實現方式 36
2.9.3 工作原理 37
2.10 使用SpinWait類 38
2.10.1 準備工作 38
2.10.2 實現方式 38
2.10.3 工作原理 39
第3章 使用線程池 40
3.1 簡介 40
3.2 在線程池中調用委托 41
3.2.1 準備工作 42
3.2.2 實現方式 42
3.2.3 工作原理 43
3.3 向線程池中放入異步操作 44
3.3.1 準備工作 44
3.3.2 實現方式 44
3.3.3 工作原理 45
3.4 線程池與并行度 45
3.4.1 準備工作 46
3.4.2 實現方式 46
3.4.3 工作原理 47
3.5 實現一個取消選項 47
3.5.1 準備工作 47
3.5.2 實現方式 48
3.5.3 工作原理 49
3.6 在線程池中使用等待事件處理器及超時 50
3.6.1 準備工作 50
3.6.2 實現方式 50
3.6.3 工作原理 51
3.6.4 更多信息 51
3.7 使用計時器 52
3.7.1 準備工作 52
3.7.2 實現方式 52
3.7.3 工作原理 53
3.8 使用BackgroundWorker組件 53
3.8.1 準備工作 53
3.8.2 實現方式 53
3.8.3 工作原理 55
第4章 使用任務并行庫 56
4.1 簡介 56
4.2 創建任務 57
4.2.1 準備工作 58
4.2.2 實現方式 58
4.2.3 工作原理 59
4.3 使用任務執行基本的操作 59
4.3.1 準備工作 60
4.3.2 實現方式 60
4.3.3 工作原理 61
4.4 組合任務 61
4.4.1 準備工作 61
4.4.2 實現方式 61
4.4.3 工作原理 63
4.5 將APM模式轉換為任務 63
4.5.1 準備工作 64
4.5.2 實現方式 64
4.5.3 工作原理 66
4.6 將EAP模式轉換為任務 66
4.6.1 準備工作 66
4.6.2 實現方式 67
4.6.3 工作原理 68
4.7 實現取消選項 68
4.7.1 準備工作 68
4.7.2 實現方式 68
4.7.3 工作原理 69
4.8 處理任務中的異常 69
4.8.1 準備工作 70
4.8.2 實現方式 70
4.8.3 工作原理 71
4.8.4 更多信息 71
4.9 并行運行任務 72
4.9.1 準備工作 72
4.9.2 實現方式 72
4.9.3 工作原理 73
4.10 使用TaskScheduler配置任務的執行 73
4.10.1 準備工作 73
4.10.2 實現方式 74
4.10.3 工作原理 76
第5章 使用C# 5.0 78
5.1 簡介 78
5.2 使用await操作符獲取異步任務結果 80
5.2.1 準備工作 80
5.2.2 實現方式 80
5.2.3 工作原理 81
5.3 在lambda表達式中使用await操作符 82
5.3.1 準備工作 82
5.3.2 實現方式 82
5.3.3 工作原理 83
5.4 對連續的異步任務使用await操作符 83
5.4.1 準備工作 84
5.4.2 實現方式 84
5.4.3 工作原理 85
5.5 對并行執行的異步任務使用await操作符 86
5.5.1 準備工作 86
5.5.2 實現方式 86
5.5.3 工作原理 87
5.6 處理異步操作中的異常 88
5.6.1 準備工作 88
5.6.2 實現方式 88
5.6.3 工作原理 89
5.7 避免使用捕獲的同步上下文 90
5.7.1 準備工作 90
5.7.2 實現方式 90
5.7.3 工作原理 92
5.8 使用async void方法 93
5.8.1 準備工作 93
5.8.2 實現方式 93
5.8.3 工作原理 95
5.9 設計一個自定義的awaitable類型 96
5.9.1 準備工作 96
5.9.2 實現方式 96
5.9.3 工作原理 97
5.10 對動態類型使用await 98
5.10.1 準備工作 99
5.10.2 實現方式 99
5.10.3 工作原理 101
第6章 使用并發集合 102
6.1 簡介 102
6.2 使用ConcurrentDictionary 103
6.2.1 準備工作 104
6.2.2 實現方式 104
6.2.3 工作原理 105
6.3 使用ConcurrentQueue實現異步處理 105
6.3.1 準備工作 106
6.3.2 實現方式 106
6.3.3 工作原理 107
6.4 改變ConcurrentStack異步處理順序 108
6.4.1 準備工作 108
6.4.2 實現方式 108
6.4.3 工作原理 109
6.5 使用ConcurrentBag創建一個可擴展的爬蟲 110
6.5.1 準備工作 110
6.5.2 實現方式 110
6.5.3 工作原理 113
6.6 使用BlockingCollection進行異步處理 113
6.6.1 準備工作 113
6.6.2 實現方式 113
6.6.3 工作原理 115
第7章 使用PLINQ 116
7.1 簡介 116
7.2 使用Parallel類 117
7.2.1 準備工作 118
7.2.2 實現方式 118
7.2.3 工作原理 119
7.3 并行化LINQ查詢 119
7.3.1 準備工作 119
7.3.2 實現方式 120
7.3.3 工作原理 122
7.4 調整PLINQ查詢的參數 122
7.4.1 準備工作 122
7.4.2 實現方式 123
7.4.3 工作原理 124
7.5 處理PLINQ查詢中的異常 125
7.5.1 準備工作 125
7.5.2 實現方式 125
7.5.3 工作原理 126
7.6 管理PLINQ查詢中的數據分區 126
7.6.1 準備工作 127
7.6.2 實現方式 127
7.6.3 工作原理 128
7.7 為PLINQ查詢創建一個自定義的聚合器 129
7.7.1 準備工作 129
7.7.2 實現方式 129
7.7.3 工作原理 131
第8章 使用Reactive Extensions 132
8.1 簡介 132
8.2 將普通集合轉換為異步的可觀察集合 133
8.2.1 準備工作 133
8.2.2 實現方式 133
8.2.3 工作原理 135
8.3 編寫自定義的可觀察對象 136
8.3.1 準備工作 136
8.3.2 實現方式 136
8.3.3 工作原理 138
8.4 使用Subject 138
8.4.1 準備工作 138
8.4.2 實現方式 138
8.4.3 工作原理 140
8.5 創建可觀察的對象 141
8.5.1 準備工作 141
8.5.2 實現方式 141
8.5.3 工作原理 143
8.6 對可觀察的集合使用LINQ查詢 144
8.6.1 準備工作 144
8.6.2 實現方式 144
8.6.3 工作原理 145
8.7 使用Rx創建異步操作 146
8.7.1 準備工作 146
8.7.2 實現方式 146
8.7.3 工作原理 148
第9章 使用異步I/O 150
9.1 簡介 150
9.2 異步地使用文件 152
9.2.1 準備工作 152
9.2.2 實現方式 152
9.2.3 工作原理 154
9.3 編寫一個異步的HTTP服務器和客戶端 155
9.3.1 準備工作 155
9.3.2 實現方式 155
9.3.3 工作原理 157
9.4 異步操作數據庫 157
9.4.1 準備工作 157
9.4.2 實現方式 158
9.4.3 工作原理 160
9.5 異步調用WCF服務 161
9.5.1 準備工作 161
9.5.2 實現方式 161
9.5.3 工作原理 164
第10章 并行編程模式 165
10.1 簡介 165
10.2 實現惰性求值的共享狀態 166
10.2.1 準備工作 166
10.2.2 實現方式 166
10.2.3 工作原理 169
10.3 使用BlockingCollection實現并行管道 170
10.3.1 準備工作 170
10.3.2 實現方式 170
10.3.3 工作原理 174
10.4 使用TPL數據流實現并行管道 175
10.4.1 準備工作 175
10.4.2 實現方式 175
10.4.3 工作原理 177
10.5 使用PLINQ實現Map/Reduce模式 178
10.5.1 準備工作 178
10.5.2 實現方式 178
10.5.3 工作原理 181
第11章 更多信息 183
11.1 簡介 183
11.2 在Windows商店應用中使用計時器 184
11.2.1 準備工作 184
11.2.2 實現方式 184
11.2.3 工作原理 188
11.3 在通常的應用程序中使用WinRT 189
11.3.1 準備工作 189
11.3.2 實現方式 189
11.3.3 工作原理 191
11.4 在Windows商店應用中使用BackgroundTask 192
11.4.1 準備工作 192
11.4.2 實現方式 192
11.4.3 工作原理 197 |
序: |