TOP
英國出版界指標大獎肯定!A.F. Steadman 獲年度作家,《史坎德》系列帶你踏上熱血奇幻旅程
並行編程實戰:基於C# 8和.NET Core 3(簡體書)
滿額折

並行編程實戰:基於C# 8和.NET Core 3(簡體書)

商品資訊

人民幣定價:99 元
定價
:NT$ 594 元
優惠價
87517
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點 :15 點
商品簡介
作者簡介
名人推薦
目次

商品簡介

《並行程序設計實戰:基於C# 8和.NET Core 3》詳細闡述了與並行程序設計相關的基本解決方案,主要包括並行程序設計簡介、任務並行性、實現資料並行、使用PLINQ、同步原語、使用併發集合、通過延遲初始化提高性能、非同步程序設計詳解、基於任務的非同步程序設計基礎、使用Visual Studio調試任務、編寫並行和非同步代碼的單元測試用例、ASP.NET Core中的IIS和Kestrel、並行程序設計中的模式、分散式存儲管理等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。

《並行程序設計實戰: 基於C# 8和.NET Core 3》適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學讀物和參考手冊。

作者簡介

沙克蒂·坦沃是Techpro Compsoft Pvt Ltd(一家全球信息技術諮詢提供商)的首席執行官。他是一名技術推廣人員和軟件架構師,在軟件發展和企業培訓方面擁有超過15年的經驗。Shakti是一名Microsoft認證培訓師,並且一直與Microsoft合作在中東地區開展培訓。他的專業領域包括.NET、Azure機器學習、人工智能、純函數式程序設計的應用和平行計算等。

名人推薦

《並行程序設計實戰:基於C# 8和.NET Core 3》詳細介紹了C#和.NET Core並行程序設計技巧,闡釋了多核計算、多工、超執行緒、執行緒池和並行程序設計的重要概念以及現代並行程序設計結構,並通過實例演示了如何實現任務並行性,以有效利用CPU資源和提高程式性能。

本書還介紹了資料並行性、PLINQ支援、支援.NET Core中並行性的資料結構、同步原語、.NET Core中可用的併發集合、延遲初始化等概念,討論了適合使用非同步程序設計的情形和不宜使用非同步程序設計的情形,以及如何利用.NET Core中的新結構(async和await關鍵字)來實現非同步代碼。


Packt出版社大約一年前首次與我聯繫,約稿撰寫本書。經過一段漫長的寫作過程,本書的編寫終於完成,雖然比我預期的要難,但是在此過程中我也學習到了很多知識。你現在看到的圖書是我經過許多漫長日子、辛勤工作的結晶,我很自豪最終能將它呈現在你的面前。

編寫一本有關C#的圖書對我來說意義重大,因為在我的職業生涯中,C#是我使用最為嫺熟的語言,撰寫一本和它有關的圖書是我一直以來的夢想。自從C#面世以來,它確實有了長足的發展,而.NET Core的出現也增強了C#在開發人員社區中的聲譽。

為了使本書對廣大讀者更有意義,我們將同時討論經典的執行緒模型和任務並行庫(TPL),並通過代碼進行更詳細的解釋。我們將首先研究作業系統和多執行緒代碼編寫方面的基本概念,然後仔細探討經典執行緒和TPL之間的區別。

本書的編寫方式力求易於學習,並注意在當前最佳程序設計實踐的背景下進行並行程序設計。本書示例簡短明瞭,即使你沒有太多的先驗知識也很容易理解。

希望你能喜歡閱讀本書,就像我喜歡撰寫本書一樣。

本書讀者

本書適用於希望學習多執行緒和並行程序設計概念,並想在使用.NET Core構建的企業應用程式中使用它們的C#程序員。如果你是學生或專業人士,想理解並行程序設計與現代硬體的結合方式,那麼本書也很適合你。

本書假定你已經熟悉C#程序設計語言和作業系統相關基礎知識。

內容介紹

本書共包括5篇14章,具體內容如下。

? 第1篇:執行緒、多工和非同步基礎,包括第1~4章。

? 第1章“並行程序設計簡介”,闡釋多執行緒和並行程序設計的重要概念。本章還介紹作業系統的發展以及現代並行程序設計結構。

? 第2章“任務並行性”,演示如何將程式劃分為任務,包括將APM模式和EAP模式轉換為任務,以有效利用CPU資源和提高程式性能。

? 第3章“實現資料並行”,重點介紹使用並行迴圈實現資料並行性。本章還介紹有助於實現並行性的擴展方法以及分區策略。

? 第4章“使用PLINQ”,說明如何利用PLINQ支持,這包括排序查詢和取消查詢。另外,本章還討論影響PLINQ性能的因素。

? 第2篇:支持.NET Core中並行性的資料結構,包括第5~7章。

? 第5章“同步原語”,介紹C#中可用的同步結構,包括互鎖操作、鎖原語、信號原語、屏障和倒數事件、自旋鎖等,使用它們可以處理多執行緒代碼中的共享資源。

? 第6章“使用併發集合”,描述如何利用.NET Core中可用的併發集合,而不必擔心手動同步編碼的問題。

? 第7章“通過延遲初始化提高性能”,闡釋延遲初始化的概念,並探討如何使用延遲模式實現內置構造,以及如何減少延遲初始化的開銷。

? 第3篇:使用C#進行非同步程序設計,包括第8章和第9章。

? 第8章“非同步程序設計詳解”,探討如何在早期版本的.NET中編寫非同步代碼,並討論適合使用非同步程序設計的情形和不宜使用非同步程序設計的情形。

? 第9章“基於任務的非同步程序設計基礎”,介紹如何利用.NET Core中的新結構(async和await關鍵字)來實現非同步代碼。

? 第4篇:非同步代碼的調試、診斷和單元測試,包括第10章和第11章。

? 第10章“使用Visual Studio調試任務”,重點介紹Visual Studio 2019中可用的各種工具,這些工具使調試並行任務更加容易。

? 第11章“編寫並行和非同步代碼的單元測試用例”,介紹在Visual Studio和.NET Core中編寫單元測試用例的各種方法。

? 第5篇:.NET Core附加的並行程序設計功能,包括第12~14章。

? 第12章“ASP.NET Core中的IIS和Kestrel”,介紹IIS和Kestrel執行緒模型。本章還探討微服務中執行緒的最佳實踐以及對非同步流的支援。

? 第 13 章“並行程序設計中的模式”,介紹用 C#語言實現的各種模式。包括MapReduce映射和歸約、聚合、分叉/合併模式、推測處理模式、延遲模式和共享狀態模式等。這也包括自訂模式實現。

? 第14章“分散式存儲管理”,探討如何在分散式程式中共享存儲。本章還介紹通信網絡的類型和特徵、拓撲結構、消息傳遞接口等。

充分利用本書

要完成本書的學習,需要在系統上安裝Visual Studio 2019和.NET Core 3。建議先掌握一些有關C#語言和作業系統方面的基礎知識。

下載示例代碼檔

讀者可以從下載本書的示例代碼檔。具體步驟如下。

(1)登錄或註冊。

(2)在Search(搜索)框中輸入本書英文版名稱的一部分Hands-On-Parallel-Programming,即可在推薦下拉式功能表中看到本書,如圖P-1所示。

圖P-1

(3)選擇Hands-On Parallel Programming with C# 8 and .NET Core 3一書,在其詳細信息頁面中按一下Download code files(下載代碼檔)超連結,如圖P-2所示。

圖P-2

提示:如果未出現Download code files(下載代碼檔)超連結,請先註冊並登錄該網站。

下載檔案後,請確保使用下列最新版本解壓縮或解壓縮檔夾。

? WinRAR/7-Zip(Windows系統)。

? Zipeg/iZip/UnRarX(Mac系統)。

? 7-Zip/PeaZip(Linux系統)。

另外,本書的代碼包也已經託管在GitHub上。



在上述頁面上,按一下Code(代碼)按鈕,然後選擇Download ZIP即可下載本書代碼包,如圖P-3所示。

圖P-3

此外,如果代碼有更新,則會在現有GitHub存儲庫上進行更新。

下載彩色圖像

我們還提供了一個PDF檔,其中包含本書所使用的螢幕截圖/圖表的彩色圖像。可以通過以下位址下載。



本書約定

本書使用了許多文本約定。

(1)CodeInText:表示文本中的代碼字、資料庫表名、資料夾名、檔案名、檔副檔名、路徑名、虛擬URL和用戶輸入等。以下段落就是一個示例。

從.NET Framework 4開始,許多執行緒安全集合被添加到.NET庫中。還添加了一個新的命名空間System.Threading.Concurrent。這包括以下結構。

? IProducerConsumerCollection

? BlockingCollection

? ConcurrentDictionary

(2)有關代碼塊的設置如下:


private static void PrintNumber10Times()

{

for (int i = 0; i < 10; i++)

{

Console.Write(1);

}

Console.WriteLine();

}


(3)任何命令列輸入或輸出都採用如下所示的粗體代碼形式:


private static void PrintNumber10Times()

{

for (int i = 0; i < 10; i++)

{

Console.Write(1);

}

Console.WriteLine();

}


(4)術語或重要單詞採用中英文對照形式,在括號內保留其英文原文。示例如下:


就集合而言,執行緒安全(Thread Safe)並不是一個全新的概念。所謂執行緒安全,就是指在擁有共享資料的多條執行緒並存執行的程式中,代碼會通過同步機制保證各個執行緒都可以被正確執行,而不會出現資料被污染等意外情況。


(5)對於接口詞彙則保留其英文原文,在後面使用括號添加其中文翻譯。示例如下:


Test Explorer(測試資源管理器)的一項關鍵功能是能夠並行運行測試用例。如果你的系統具有多個CPU核心,則可以輕鬆利用並行性來更快地運行測試用例。這可以通過按一下Test Explorer(測試資源管理器)中的Run Tests in parallel(並行運行測試)按鈕來完成。

(6)本書還使用了以下兩個圖示。

表示警告或重要的注意事項。

表示提示或小技巧。

關於作者

Shakti Tanwar是Techpro Compsoft Pvt Ltd(一家全球信息技術諮詢提供商)的首席執行官。他是一名技術推廣人員和軟件架構師,在軟件發展和企業培訓方面擁有超過15年的經驗。Shakti是一名Microsoft認證培訓師,並且一直與Microsoft合作在中東地區開展培訓。他的專業領域包括.NET、Azure機器學習、人工智能、純函數式程序設計的應用和平行計算等。

沒有我的妻子Kirti和兒子Shashwat的支持,這本書是不可能面世的,正是他們的微笑和鼓勵使我奮力前進。

永遠感謝我的父母和兄弟姐妹,他們一直激勵著我邁向新的成功高度。

非常感謝我的朋友、導師和Packt團隊,他們在本書的創作中為我提供了悉心的指導。

關於審稿人

Alvin Ashcraft是一名居住在費城附近的開發人員。他從事C#、Visual Studio、WPF、ASP.NET等軟件的開發工作長達23年。他已經9次獲得Microsoft MVP頭銜。他的博客是Morning Dew,內容大都與.NET開發有關。另外,他也是Allscripts的首席軟件工程師,負責構建醫療保健軟件。他之前曾在軟件公司(包括Oracle)任職。他還審讀過Packt Publishing的其他書稿,如Mastering ASP.NET Core 2.0、Mastering Entity Framework Core 2.0和Learning ASP.NET Core 2.0等。

Vidya Vrat Agarwal是一位飽學之士、演講人、Apress的出版作者,並且也是Apress、Packt和O’Reilly等出版社10多本書的技術審稿人。除此之外,他還是一位架構師,在為大型企業設計架構和開發分散式軟件解決方案方面擁有20年的經驗。在T-Mobile擔任首席架構師時,他曾與B2C和B2B團隊合作,為各種T-Mobile計畫建立解決方案和架構路線圖,從而對數百萬的T-Mobile客戶產生積極影響。他將軟件發展視為一種技巧,並且積極支援軟件架構和簡潔代碼實踐。


目次

第1篇 執行緒、多工和非同步基礎
第1章 並行程序設計簡介
1.1 技術要求
1.2 為多核計算做準備
1.2.1 進程
1.2.2 硬體和應用程式的性能
1.2.3 多工
1.2.4 超執行緒
1.2.5 Flynn分類法
1.2.6 執行緒
1.2.7 執行緒類型
1.2.8 執行緒單元狀態
1.2.9 多執行緒
1.2.10 Thread類
1.2.11 使用Thread類的優缺點
1.2.12 ThreadPool類
1.2.13 使用ThreadPool的優缺點
1.2.14 BackgroundWorker
1.2.15 使用BackgroundWorker的優缺點
1.2.16 多執行緒與多工對比
1.3 適用並行程序設計技術的場景
1.4 並行程序設計的優缺點
1.5 小結
1.6 牛刀小試
第2章 任務並行性
2.1 技術要求
2.2 任務
2.3 創建和啟動任務
2.3.1 System.Threading.Tasks.Task類
2.3.2 System.Threading.Tasks.Task.Factory.StartNew方法
2.3.3 System.Threading.Tasks.Task.Run方法
2.3.4 System.Threading.Tasks.Task.Delay方法
2.3.5 System.Threading.Tasks.Task.Yield方法
2.3.6 System.Threading.Tasks.Task.FromResult(T)方法
2.3.7 System.Threading.Tasks.Task.FromException和System.Threading.Tasks.Task.FromException(T)方法
2.3.8 System.Threading.Tasks.Task.FromCanceled和System.Threading.Tasks.Task.FromCanceled(T)方法
2.4 從完成的任務中獲取結果
2.5 取消任務
2.5.1 創建權杖
2.5.2 使用權杖創建任務
2.5.3 通過IsCancellationRequested屬性輪詢權杖的狀態
2.5.4 註冊請求取消的回檔
2.6 等待正在運行的任務
2.6.1 Task.Wait
2.6.2 Task.WaitAll
2.6.3 Task.WaitAny
2.6.4 Task.WhenAll
2.6.5 Task.WhenAny
2.7 處理任務異常
2.7.1 處理來自單個任務的異常
2.7.2 處理來自多個任務的異常
2.7.3 使用回呼函數處理任務異常
2.8 將APM模式轉換為任務
2.9 將EAP模式轉換為任務
2.10 有關任務的更多信息
2.10.1 後續任務
2.10.2 使用Task.ContinueWith方法繼續執行任務
……
第2篇 支持.NET Core中並行性的資料結構
第3篇 使用C#進行非同步程序設計
第4篇 非同步代碼的調試、診斷和單元測試
第5篇 .NET Core附加的並行程序設計功能
附錄 牛刀小試答案

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 517
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區