C# 多線程編程實戰, 2/e (Multithreading with C# Cookbook, 2/e)

易格恩·阿格佛溫 (Eugene Agafonov)

  • 出版商: 機械工業
  • 出版日期: 2017-03-01
  • 定價: $354
  • 售價: 8.5$301
  • 語言: 簡體中文
  • 頁數: 214
  • 裝訂: 平裝
  • ISBN: 7111561023
  • ISBN-13: 9787111561026
  • 相關分類: C#
  • 此書翻譯自: Multithreading with C# Cookbook, 2/e
  • 已絕版

買這商品的人也買了...

商品描述

為了創建這樣的應用程序,你需要學習如何在程序中有效地使用多個CPU核心。如果你使用的是Microsoft.NET開發平臺以及C#編程語言,那麽本書將是一個編寫高性能、高響應性的應用程序的完美起點。本書的目的是給你提供C#中多線程以及並行編程的詳盡指導。我們將從基本概念開始,每章主題比前一章都有所拔高,後展示了現實世界中的並行編程模式以及Windows商店應用示例。

目錄大綱

譯者序

前言

第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.083
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對動態類型使用await105
5.10.1準備工作105
5.10.2實現方式105
5.10.3工作原理107

第6章 使用並發集合109
6.1簡介109
6.2使用ConcurrentDictionary110
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章 使用PLINQ124
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 Extensions142
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使用Subject148
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/O160
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在通常的應用程序中使用WinRT201
11.3.1準備工作201
11.3.2實現方式201
11.3. 3工作原理203
11.4在通用Windows平台應用中使用BackgroundTask203
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