注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計并行編程實戰(zhàn):基于C# 8和.NET Core 3

并行編程實戰(zhàn):基于C# 8和.NET Core 3

并行編程實戰(zhàn):基于C# 8和.NET Core 3

定 價:¥99.00

作 者: [印]沙克蒂·坦沃 著 馬琳琳 譯
出版社: 清華大學(xué)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787302581826 出版時間: 2021-07-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 295 字?jǐn)?shù):  

內(nèi)容簡介

  《并行編程實戰(zhàn):基于C# 8和.NET Core 3》詳細(xì)闡述了與并行編程相關(guān)的基本解決方案,主要包括并行編程簡介、任務(wù)并行性、實現(xiàn)數(shù)據(jù)并行、使用PLINQ、同步原語、使用并發(fā)集合、通過延遲初始化提高性能、異步編程詳解、基于任務(wù)的異步編程基礎(chǔ)、使用Visual Studio調(diào)試任務(wù)、編寫并行和異步代碼的單元測試用例、ASP.NET Core中的IIS和Kestrel、并行編程中的模式、分布式存儲管理等內(nèi)容。此外,本書還提供了相應(yīng)的示例、代碼,以幫助讀者進(jìn)一步理解相關(guān)方案的實現(xiàn)過程。 《并行編程實戰(zhàn): 基于C# 8和.NET Core 3》適合作為高等院校計算機(jī)及相關(guān)專業(yè)的教材和教學(xué)參考書,也可作為相關(guān)開發(fā)人員的自學(xué)讀物和參考手冊。

作者簡介

  沙克蒂·坦沃是Techpro Compsoft Pvt Ltd(一家全球信息技術(shù)咨詢提供商)的首席執(zhí)行官。他是一名技術(shù)推廣人員和軟件架構(gòu)師,在軟件開發(fā)和企業(yè)培訓(xùn)方面擁有超過15年的經(jīng)驗。Shakti是一名Microsoft認(rèn)證培訓(xùn)師,并且一直與Microsoft合作在中東地區(qū)開展培訓(xùn)。他的專業(yè)領(lǐng)域包括.NET、Azure機(jī)器學(xué)習(xí)、人工智能、純函數(shù)式編程的應(yīng)用和并行計算等。

圖書目錄

第1篇  線程、多任務(wù)和異步基礎(chǔ) 第1章  并行編程簡介 3 1.1  技術(shù)要求 3 1.2  為多核計算做準(zhǔn)備 4 1.2.1  進(jìn)程 4 1.2.2  硬件和應(yīng)用程序的性能 4 1.2.3  多任務(wù) 4 1.2.4  超線程 5 1.2.5  Flynn分類法 6 1.2.6  線程 7 1.2.7  線程類型 7 1.2.8  線程單元狀態(tài) 7 1.2.9  多線程 10 1.2.10  Thread類 12 1.2.11  使用Thread類的優(yōu)缺點 16 1.2.12  ThreadPool類 17 1.2.13  使用ThreadPool的優(yōu)缺點 19 1.2.14  BackgroundWorker 20 1.2.15  使用BackgroundWorker的優(yōu)缺點 23 1.2.16  多線程與多任務(wù)對比 24 1.3  適用并行編程技術(shù)的場景 24 1.4  并行編程的優(yōu)缺點 25 1.5  小結(jié) 26 1.6  牛刀小試 26 第2章  任務(wù)并行性 29 2.1  技術(shù)要求 29 2.2  任務(wù) 29 2.3  創(chuàng)建和啟動任務(wù) 30 2.3.1  System.Threading.Tasks.Task類 31 2.3.2  System.Threading.Tasks.Task.Factory.StartNew方法 32 2.3.3  System.Threading.Tasks.Task.Run方法 33 2.3.4  System.Threading.Tasks.Task.Delay方法 33 2.3.5  System.Threading.Tasks.Task.Yield方法 34 2.3.6  System.Threading.Tasks.Task.FromResult方法 36 2.3.7  System.Threading.Tasks.Task.FromException和System.Threading. Tasks.Task.FromException方法 37 2.3.8  System.Threading.Tasks.Task.FromCanceled和System.Threading.Tasks. Task.FromCanceled方法 37 2.4  從完成的任務(wù)中獲取結(jié)果 38 2.5  取消任務(wù) 39 2.5.1  創(chuàng)建令牌 40 2.5.2  使用令牌創(chuàng)建任務(wù) 40 2.5.3  通過IsCancellationRequested屬性輪詢令牌的狀態(tài) 41 2.5.4  注冊請求取消的回調(diào) 42 2.6  等待正在運(yùn)行的任務(wù) 44 2.6.1  Task.Wait 44 2.6.2  Task.WaitAll 45 2.6.3  Task.WaitAny 45 2.6.4  Task.WhenAll 46 2.6.5  Task.WhenAny 46 2.7  處理任務(wù)異常 47 2.7.1  處理來自單個任務(wù)的異常 47 2.7.2  處理來自多個任務(wù)的異常 48 2.7.3  使用回調(diào)函數(shù)處理任務(wù)異常 49 2.8  將APM模式轉(zhuǎn)換為任務(wù) 50 2.9  將EAP模式轉(zhuǎn)換為任務(wù) 52 2.10  有關(guān)任務(wù)的更多信息 54 2.10.1  后續(xù)任務(wù) 54 2.10.2  使用Task.ContinueWith方法繼續(xù)執(zhí)行任務(wù) 54 2.10.3  使用Task.Factory.ContinueWhenAll和Task.Factory.ContinueWhenAll 繼續(xù)執(zhí)行任務(wù) 55 2.10.4  使用Task.Factory.ContinueWhenAny和Task.Factory. ContinueWhenAny繼續(xù)執(zhí)行任務(wù) 56 2.10.5  父任務(wù)和子任務(wù) 57 2.10.6  創(chuàng)建一個分離的子任務(wù) 57 2.10.7  創(chuàng)建一個附加的任務(wù) 58 2.11  工作竊取隊列 59 2.12  小結(jié) 62 2.13  牛刀小試 62 第3章  實現(xiàn)數(shù)據(jù)并行 65 3.1  技術(shù)要求 65 3.2  從順序循環(huán)到并行循環(huán) 65 3.2.1  使用Parallel.Invoke方法 66 3.2.2  使用Parallel.For方法 68 3.2.3  使用Parallel.ForEach方法 69 3.3  了解并行度 70 3.4  在并行循環(huán)中創(chuàng)建自定義分區(qū)策略 72 3.4.1  范圍分區(qū) 73 3.4.2  塊分區(qū) 73 3.5  取消循環(huán) 74 3.5.1  使用Parallel.Break 75 3.5.2  使用ParallelLoopState.St0p 76 3.5.3  使用CancellationToken 77 3.6  了解并行循環(huán)中的線程存儲 79 3.6.1  線程局部變量 79 3.6.2  分區(qū)局部變量 80 3.7  小結(jié) 81 3.8  牛刀小試 81 第4章  使用PLINQ 83 4.1  技術(shù)要求 83 4.2  .NET中的LINQ提供程序 84 4.3  編寫PLINQ查詢 84 4.3.1  關(guān)于ParallelEnumerable類 85 4.3.2  編寫第#一個PLINQ查詢 85 4.4  在并行執(zhí)行時保持順序 86 4.4.1  使用AsOrdered()方法 87 4.4.2  使用AsUnOrdered()方法 88 4.5  PLINQ中的合并選項 88 4.5.1  使用N0tBuffered合并選項 88 4.5.2  使用AutoBuffered合并選項 89 4.5.3  使用FullyBuffered合并選項 90 4.6  使用PLINQ拋出和處理異常 92 4.7  組合并行和順序LINQ查詢 94 4.8  取消PLINQ查詢 95 4.9  使用PLINQ進(jìn)行并行編程時要考慮的事項 97 4.10  影響PLINQ性能的因素 97 4.10.1  并行度 97 4.10.2  合并選項 98 4.10.3  分區(qū)類型 98 4.10.4  確定是保持順序執(zhí)行還是轉(zhuǎn)向并行 98 4.10.5  操作順序 98 4.10.6  使用ForAll 99 4.10.7  強(qiáng)制并行 99 4.10.8  生成序列 99 4.11  小結(jié) 100 4.12  牛刀小試 100 第2篇  支持.NET Core中并行性的數(shù)據(jù)結(jié)構(gòu) 第5章  同步原語 105 5.1  技術(shù)要求 105 5.2  關(guān)于同步原語 105 5.3  互鎖操作 106 5.3.1  .NET中的內(nèi)存屏障 108 5.3.2  重新排序 108 5.3.3  內(nèi)存屏障的類型 109 5.3.4  避免使用構(gòu)造對代碼進(jìn)行重新排序 110 5.4  鎖原語 111 5.4.1  鎖的工作方式 111 5.4.2  線程狀態(tài) 111 5.4.3  阻塞與自旋 113 5.5  鎖、互斥鎖和信號量 113 5.5.1  鎖 114 5.5.2  互斥鎖 116 5.5.3  信號量 118 5.5.4  ReaderWriterLock 120 5.6  信號原語 120 5.6.1  Thread.Join 120 5.6.2  EventWaitHandle 122 5.6.3  AutoResetEvent 122 5.6.4  ManualResetEvent 123 5.6.5  WaitHandle 125 5.7  輕量級同步原語 129 5.7.1  Slim鎖 129 5.7.2  ReaderWriterLockSlim 130 5.7.3  SemaphoreSlim 131 5.7.4  ManualResetEventSlim 132 5.8  屏障和倒數(shù)事件 133 5.9  使用Barrier和CountDownEvent的案例研究 133 5.10  SpinWait 136 5.11  自旋鎖 136 5.12  小結(jié) 137 5.13  牛刀小試 138 第6章  使用并發(fā)集合 141 6.1  技術(shù)要求 141 6.2  并發(fā)集合詳解 141 6.2.1  關(guān)于IProducerConsumerCollection 142 6.2.2  使用ConcurrentQueue 143 6.2.3  使用隊列解決生產(chǎn)者-消費者問題 143 6.2.4  使用并發(fā)隊列解決問題 145 6.2.5  Queue與ConcurrentQueue性能對比 146 6.2.6  使用ConcurrentStack 146 6.2.7  創(chuàng)建并發(fā)堆棧 146 6.2.8  使用ConcurrentBag 148 6.2.9  使用BlockingCollection 149 6.2.10  創(chuàng)建BlockingCollection 150 6.3  多生產(chǎn)者-消費者應(yīng)用場景 151 6.4  使用ConcurrentDictionary 153 6.5  小結(jié) 154 6.6  牛刀小試 155 第7章  通過延遲初始化提高性能 157 7.1  技術(shù)要求 157 7.2  延遲初始化概念簡析 157 7.3  關(guān)于System.Lazy 161 7.3.1  封裝在構(gòu)造函數(shù)中的構(gòu)造邏輯 161 7.3.2  作為委托傳遞給Lazy的構(gòu)造邏輯 162 7.4  使用延遲初始化模式處理異常 163 7.4.1  初始化期間沒有異常發(fā)生 164 7.4.2  使用異常緩存初始化時出現(xiàn)隨機(jī)異常 164 7.4.3  不緩存異常 166 7.5  線程本地存儲的延遲初始化 167 7.6  減少延遲初始化的開銷 169 7.7  小結(jié) 171 7.8  牛刀小試 172 第3篇  使用C#進(jìn)行異步編程 第8章  異步編程詳解 175 8.1  技術(shù)要求 175 8.2  程序執(zhí)行的類型 175 8.2.1  理解同步程序執(zhí)行 176 8.2.2  理解異步程序執(zhí)行 177 8.3  適合使用異步編程的情形 178 8.3.1  編寫異步代碼 179 8.3.2  使用Delegate類的BeginInvoke方法 179 8.3.3  使用Task類 181 8.3.4  使用IAsyncResult接口 181 8.4  不宜使用異步編程的情形 183 8.5  使用異步代碼可以解決的問題 183 8.6  小結(jié) 184 8.7  牛刀小試 185 第9章  基于任務(wù)的異步編程基礎(chǔ) 187 9.1  技術(shù)要求 187 9.2  關(guān)于async和await關(guān)鍵字 187 9.2.1  使用async和await關(guān)鍵字的原因 188 9.2.2  異步方法的返回類型 191 9.3  異步委托和Lambda表達(dá)式 192 9.4  基于任務(wù)的異步模式 192 9.4.1  編譯器方法,使用async關(guān)鍵字 193 9.4.2  手動實現(xiàn)TAP 193 9.5  異步代碼的異常處理 194 9.5.1  返回Task并拋出異常的方法 194 9.5.2  從try-catch塊外部調(diào)用異步方法并且不帶await關(guān)鍵字 194 9.5.3  從try-catch塊內(nèi)部調(diào)用異步方法并且不帶await關(guān)鍵字 196 9.5.4  從try-catch塊外部使用await關(guān)鍵字調(diào)用異步方法 198 9.5.5  返回void的方法 199 9.6  使用PLINQ實現(xiàn)異步 200 9.7  衡量異步代碼的性能 201 9.8  使用異步代碼的準(zhǔn)則 203 9.8.1  避免使用異步void 204 9.8.2  使用異步連鎖鏈 204 9.8.3  盡可能使用ConfigureAwait 205 9.9  小結(jié) 205 9.10  牛刀小試 205 第4篇  異步代碼的調(diào)試、診斷和單元測試 第10章  使用Visual Studio調(diào)試任務(wù) 209 10.1  技術(shù)要求 209 10.2  使用Visual Studio 2019進(jìn)行調(diào)試 209 10.3  如何調(diào)試線程 210 10.4  使用并行堆棧窗口 212 10.4.1  使用并行堆棧窗口進(jìn)行調(diào)試 213 10.4.2  線程視圖 213 10.4.3  任務(wù)視圖 215 10.4.4  使用并行觀察窗口進(jìn)行調(diào)試 216 10.5  使用并發(fā)可視化器 217 10.5.1  利用率視圖 219 10.5.2  線程視圖 219 10.5.3  核心視圖 220 10.6  小結(jié) 220 10.7  牛刀小試 221 10.8  深入閱讀 222 第11章  編寫并行和異步代碼的單元測試用例 223 11.1  技術(shù)要求 223 11.2  使用.NET Core進(jìn)行單元測試 224 11.3  了解編寫異步代碼的單元測試用例的問題 226 11.4  編寫并行代碼和異步代碼的單元測試用例 228 11.4.1  檢查成功的結(jié)果 229 11.4.2  檢查除數(shù)為0時的異常結(jié)果 229 11.5  使用Moq模擬異步代碼的設(shè)置 230 11.6  使用測試工具 232 11.7  小結(jié) 233 11.8  牛刀小試 233 11.9  深入閱讀 234 第5篇  .NET Core附加的并行編程功能 第12章  ASP.NET Core中的IIS和Kestrel 237 12.1  技術(shù)要求 237 12.2  IIS線程模型 237 12.2.1  避免饑餓算法 238 12.2.2  爬山算法 238 12.3  Kestrel線程模型 239 12.3.1  ASP.NET Core 1.x 241 12.3.2  ASP.NET Core 2.x 241 12.4  微服務(wù)中線程的#佳實踐 242 12.4.1  單線程單進(jìn)程微服務(wù) 242 12.4.2  單線程多進(jìn)程微服務(wù) 243 12.4.3  多線程單進(jìn)程微服務(wù) 243 12.4.4  異步服務(wù) 243 12.4.5  專用線程池 243 12.5  在ASP.NET MVC Core中使用異步 245 12.5.1  創(chuàng)建異步Web API 245 12.5.2  異步流 248 12.6  小結(jié) 251 12.7  牛刀小試 251 第13章  并行編程中的模式 253 13.1  技術(shù)要求 253 13.2  MapReduce模式 253 13.2.1  映射和歸約 253 13.2.2  使用LINQ實現(xiàn)MapReduce 254 13.3  聚合 257 13.4  分叉/合并模式 258 13.5  推測處理模式 259 13.6  延遲模式 260 13.7  共享狀態(tài)模式 263 13.8  小結(jié) 263 13.9  牛刀小試 264 第14章  分布式存儲管理 265 14.1  技術(shù)要求 265 14.2  分布式系統(tǒng)簡介 265 14.3  共享存儲模型與分布式存儲模型 267 14.3.1  共享存儲模型 267 14.3.2  分布式存儲模型 268 14.4  通信網(wǎng)絡(luò)的類型 270 14.4.1  靜態(tài)通信網(wǎng)絡(luò)
……
附錄

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號