C#多綫程編程實戰(原書第2版)

C#多綫程編程實戰(原書第2版) pdf epub mobi txt 电子书 下载 2025

[美] 易格恩·阿格佛溫(Eugene Agafonov) 著,黃博文 譯
圖書標籤:
  • C#
  • 多綫程
  • 並發編程
  • 並行編程
  • 異步編程
  • Task
  • 綫程安全
  • 鎖機製
  • 性能優化
  • CLR
  • 實戰
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111561026
版次:1
商品编码:12147384
品牌:机工出版
包装:平装
丛书名: 华章程序员书库
开本:16开
出版时间:2017-03-01
用纸:胶版纸
页数:214

具体描述

內容簡介

  為瞭創建這樣的應用程序,你需要學習如何在程序中有效地使用多個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.

前言/序言

  不久前,典型的個人計算機的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#特性——異步方法。你將瞭解async和await關鍵字,如何在不同的場景中使用它們,以及await的底層工作機製。
  第6章描述瞭.NET框架中並行算法的標準數據結構,並為每種數據結構展示瞭示例編程場景。
  第7章深入講解瞭並行LINQ基礎設施。本章講述瞭任務和數據並行度、並行化LINQ查詢、調整並行選項、分割查詢和集閤並行查詢結果等內容。
  第8章解釋瞭如何以及何時使用Reactive Extensions框架。你將學習如何組閤事件,如何對事件序列執行LINQ查詢等。
  第9章深入講解瞭異步I/O進程,包括文件、網絡及數據庫等場景。
  第10章列齣瞭針對常見的並行編程問題的解決方案。
  第11章講述瞭為Windows10、OS X,以及Linux編寫異步應用程序。你將學習如何使用Windows 10異步API,以及如何在Windows商店應用中完成後颱工作。你也會熟悉跨平颱的.NET開發工具和組件。
  準備事項我們需要Microsoft Visual Studio社區版2015來完成大多數章節的學習。在第11章中,對於OS X和Linux可能需要Visual Studio Code編輯器,當然你也可以使用任何你熟悉的編輯工具。
  讀者對象本書的讀者對象為沒有或隻有少量多綫程及異步和並發編程背景的C#開發人員。本書涵蓋瞭C#和.NET生態係統中從基礎概念到復雜編程模式及算法的很多與多綫程相關的主題。
  下載示例代碼本書的示例代碼可登錄華章網站中的本書頁麵下載。

《Concurrency Unleashed: Mastering C Parallel and Asynchronous Programming》 內容簡介 在當今日益增長的數據量和對即時響應的需求驅動下,軟件性能和可伸縮性已成為衡量應用成功與否的關鍵指標。多綫程和異步編程作為實現高性能和高響應性的核心技術,其重要性不言而喻。本書《Concurrency Unleashed: Mastering C Parallel and Asynchronous Programming》旨在帶領開發者深入探索 C 語言在並發編程領域的強大能力,從基礎概念到高級模式,提供一套係統、實戰的解決方案,幫助您構建更高效、更具擴展性的 C 應用程序。 本書並非對某個特定版本 C 語言特性的簡單羅列,而是緻力於構建一套完整的並發編程思維框架。我們將從最基礎的綫程模型入手,逐層深入,剖析綫程的創建、管理、同步與通信等核心機製。您將理解不同綫程調度策略的影響,掌握如何有效地利用多核處理器,避免常見的性能瓶頸。 第一部分:理解並發的基礎 在正式進入 C 的並發編程實踐之前,本書將首先為你打下堅實的基礎。我們將從綫程的生命周期開始,詳細解析綫程的創建、啓動、就緒、運行、阻塞、終止等各個階段,以及影響綫程行為的關鍵因素。你將學會如何創建和管理綫程,理解`Thread`類的強大功能,並瞭解其局限性。 隨後,我們將聚焦於綫程同步這一並發編程中的核心挑戰。本書將深入講解各種同步原語,包括互斥鎖(`lock`)、信號量(`Semaphore`)、事件(`EventWaitHandle`)等,並演示它們在保護共享資源、避免競態條件方麵的作用。你將學習如何精確地運用這些工具,確保數據的一緻性和程序的健壯性。 此外,綫程間通信是並發程序設計的另一重要環節。我們將探討多種通信方式,例如共享變量、消息隊列、事件委托等,並分析不同場景下最適閤的通信模式。你將瞭解到如何在多綫程環境中安全有效地傳遞數據,實現綫程間的協同工作。 第二部分:C 的並發工具箱 C 語言提供瞭豐富的內置庫和語言特性來簡化並發編程。本書將全麵介紹這些工具,並展示它們在實際應用中的用法。 Task Parallel Library (TPL):TPL 是 C 中實現並行和異步編程的基石。你將深入學習 `Task` 和 `Task` 的概念,理解其非阻塞的執行方式,以及如何利用 `Parallel` 類進行數據並行處理。我們將演示如何使用 `Parallel.For`、`Parallel.ForEach` 和 `Parallel.Invoke` 來輕鬆實現高效的並行計算。 異步編程模型 (APM, EAP, TAP):本書將係統梳理 C 中異步編程的演進曆程,從傳統的 APM 和 EAP,重點介紹現代化的 TAP(Task-based Asynchronous Pattern)。你將全麵掌握 `async` 和 `await` 關鍵字的強大威力,學會編寫簡潔、易讀的異步代碼,有效處理 I/O 密集型和 CPU 密集型操作,極大地提升應用程序的響應能力。 PLINQ (Parallel LINQ):PLINQ 允許你以並行的方式執行 LINQ 查詢,顯著提高處理大規模數據集時的性能。我們將展示如何將現有的 LINQ 查詢轉換為 PLINQ,並探討其適用的場景和潛在的性能調優技巧。 Concurrent Collections:為瞭簡化並發集閤的管理,C 提供瞭 `System.Collections.Concurrent` 命名空間下的各種綫程安全集閤,如 `ConcurrentBag`、`ConcurrentDictionary`、`ConcurrentQueue` 和 `ConcurrentStack`。本書將詳細介紹這些集閤的用法,幫助你避免在訪問共享集閤時引入並發問題。 第三部分:高級並發模式與挑戰 掌握瞭基礎工具後,我們將進一步探索更高級的並發模式和常見的挑戰,助你應對更復雜的應用場景。 Actor 模型:本書將介紹 Actor 模型作為一種高度可擴展且容錯的並發編程範式。你將瞭解 Actor 的概念、消息傳遞機製,以及如何在 C 中實現 Actor 模型,例如使用第三方庫或自行構建。 響應式編程:我們將探討響應式編程的思想,以及如何在 C 中實現它。你將瞭解事件流、可觀察序列等概念,並學習如何利用 Rx.NET 等庫來構建對事件驅動的、具有高度彈性的應用程序。 並發中的錯誤處理與調試:並發程序中的錯誤往往難以復現和定位。本書將提供一套行之有效的錯誤處理策略,包括異常傳播、Cancellation Tokens 的運用,以及利用 Visual Studio 等調試工具進行並發程序的調試技巧。 性能優化與陷阱規避:我們將深入剖析並發編程中常見的性能陷阱,如死鎖、活鎖、鎖粒度問題、綫程飢餓等,並提供相應的規避和優化方法。你將學習如何通過性能分析工具識彆瓶頸,並對並發代碼進行細緻的調優。 分布式並發:雖然本書的重點在於單機 C 並發,但我們將觸及分布式並發的一些基本概念,例如如何通過消息隊列或 RPC 等機製在不同進程或機器之間進行通信和協調,為構建更大型的分布式係統奠定基礎。 本書特色 由淺入深,係統性強:從基礎概念到高級模式,循序漸進,構建完整的並發編程知識體係。 理論與實踐相結閤:每個概念都配有大量清晰、可運行的代碼示例,幫助讀者快速理解和掌握。 關注實際問題:本書重點解決開發者在實際項目中遇到的並發挑戰,提供可落地解決方案。 剖析性能瓶頸:深入分析常見的性能問題,指導讀者進行有效的性能調優。 前沿技術展望:涵蓋瞭異步編程、響應式編程等現代並發技術,幫助讀者緊跟技術發展潮流。 目標讀者 需要構建高性能、高響應性 C 應用程序的初中級 C 開發者。 對並發編程感到睏惑,希望係統學習 C 並發技術的開發者。 尋求提升 C 應用程序可伸縮性和穩定性的資深開發者。 希望掌握現代異步編程和並行處理技術的 .NET 開發者。 通過閱讀《Concurrency Unleashed: Mastering C Parallel and Asynchronous Programming》,您將能夠自信地駕馭 C 的並發編程能力,構建齣更卓越、更具競爭力的軟件産品。讓我們一起釋放 C 的並發潛能,迎接更高效的編程時代。

用户评价

评分

這本書真是太棒瞭,徹底改變瞭我對 C 多綫程的理解。以前我總覺得多綫程像個黑盒子,能用就行,但遇到問題就束手無策。這本書簡直就像是為我量身定做的,從最基礎的概念講起,一點點深入到各種復雜的場景。我尤其喜歡它在講解同步機製的部分,比如 `lock` 語句、`Monitor` 類,還有 `SemaphoreSlim` 和 `Mutex`,作者都用非常形象的比喻和清晰的代碼示例來解釋,讓我不再隻是死記硬背 API,而是真正理解瞭它們的工作原理和適用場景。書中還涉及瞭 `Task` 並行庫,這是 C 4.0 之後引入的強大工具,作者不僅詳細介紹瞭 `Task` 的創建、執行和結果獲取,還深入講解瞭如何利用 `async` 和 `await` 來編寫異步代碼,這對我來說簡直是福音,告彆瞭繁瑣的迴調地獄。書中的實戰案例也非常貼閤實際開發需求,比如處理大量的並發請求、構建響應式的 UI 界麵、實現高效的數據並行處理等等,我可以直接將學到的知識應用到我的項目中,解決瞭很多棘手的性能瓶頸。總的來說,這本書的深度和廣度都非常令人滿意,既有理論的高度,又有實踐的溫度。

评分

閱讀這本書的過程,更像是一次深入的探索之旅。作者並沒有滿足於介紹 C 提供的各種多綫程 API,而是進一步挖掘瞭它們背後的實現原理和性能考量。我特彆受啓發的部分是關於綫程池的工作細節,它解釋瞭為什麼在某些情況下創建新綫程比重用綫程池中的綫程更有效率,以及如何根據具體應用場景來調整綫程池的大小。書中對 `TaskScheduler` 的講解也讓我茅塞頓開,理解瞭任務是如何被調度到不同的綫程上的,這對於掌握更高級的並發控製非常有幫助。我曾經以為 `Task` 就是簡單地封裝瞭綫程,讀瞭這本書纔明白,它是一個更強大、更靈活的任務執行框架。此外,書中對單元測試在多綫程環境下的挑戰也進行瞭討論,並且提供瞭一些實用的建議和技巧,這對於保證多綫程代碼的質量至關重要。這本書的內容非常豐富,覆蓋瞭從入門到精通的各個層麵,並且始終保持著對細節的關注和對原理的深入剖析,讓我受益匪淺。

评分

這本書的結構設計非常閤理,從基礎概念到高級應用,循序漸進,非常適閤有一定 C 基礎的開發者。我特彆喜歡書中對並發設計模式的討論,比如生産者-消費者模式、讀寫鎖模式等,這些模式的應用場景和實現方式都介紹得非常清晰,能夠幫助我快速地在實際項目中找到解決方案。書中還介紹瞭一些與並行計算相關的技術,比如 `Parallel.For` 和 `Parallel.ForEach`,它們能夠極大地簡化並行迭代的編寫,並且能夠自動地利用多核處理器來加速計算。我嘗試著用這些方法來優化我項目中一些耗時的數據處理任務,效果非常顯著。另外,作者對異常處理在多綫程環境下的特殊性也進行瞭詳細的闡述,這通常是開發者容易忽視但又非常重要的一點。瞭解如何在多綫程環境下正確地捕獲和處理異常,能夠避免程序崩潰,提高健壯性。總而言之,這本書不僅提供瞭豐富的技術知識,還傳授瞭良好的編程思想和實踐方法,是我在 C 多綫程領域學習道路上的重要指引。

评分

老實說,這本書的某些章節對我來說還是有點挑戰的。作者在講解一些高級主題時,比如內存模型、原子操作以及一些底層的同步機製,確實需要一定的 C 和計算機底層知識基礎。我第一次讀到關於內存排序和緩存一緻性的時候,腦子幾乎是宕機狀態,感覺離我平時的業務開發有點遠。不過,當我帶著問題去迴顧和理解這些內容時,纔發現它們對於編寫真正高性能、高可靠性的並發程序是多麼重要。書中對 `Interlocked` 類的使用講解得非常細緻,通過一係列簡單的原子操作,能夠實現復雜的同步邏輯,這在很多性能敏感的場景下非常有用。還有對 `CancellationToken` 的講解,這對於實現可取消的異步操作至關重要,能夠有效地避免資源浪費和提高程序的響應性。雖然有些地方我可能需要反復閱讀,甚至結閤其他資料來加深理解,但我相信,隨著我技術經驗的增長,這本書的價值會越來越凸顯。它不是一本讓你快速上手就能寫齣多綫程代碼的書,而是一本讓你真正理解多綫程編程“為什麼”和“如何”的書。

评分

這本書的學習麯綫相當陡峭,但如果你能堅持下來,收獲絕對是巨大的。作者並沒有選擇把所有的細節都一股腦地拋給你,而是層層遞進,讓你在不知不覺中建立起對多綫程編程的深刻認識。我尤其欣賞它對於綫程安全問題的分析,書中列舉瞭各種常見的死鎖、競態條件等問題,並且詳細闡述瞭如何通過各種同步原語來規避這些風險。它不僅教你如何“寫”多綫程代碼,更重要的是教你如何“思考”多綫程代碼,如何預見潛在的問題並提前防範。我曾經在項目中遇到過一個非常難以調試的並發 bug,花費瞭大量時間纔找到根源,如果當時我讀瞭這本書,很多彎路都可以避免。書中對 `ThreadPool` 的講解也非常到位,深入剖析瞭綫程池的工作機製,以及如何通過配置來優化綫程池的性能,這對於理解 C 中任務的調度和執行至關重要。另外,作者對並發集閤類的介紹也很有價值,比如 `ConcurrentDictionary` 和 `ConcurrentQueue`,它們在多綫程環境下提供瞭安全高效的訪問方式,能夠簡化很多並發編程的復雜性。總而言之,這是一本需要你投入時間和精力去鑽研的書,但絕對值得。

评分

一般,发货时间太长了

评分

实用性很好,方便查阅学习

评分

物流快,包装好,挺不错的

评分

很不错的书,例子很详细,简单易懂,讲解透彻

评分

还不错,挺好的

评分

很容易看得懂

评分

书很不错,嗯,买的,现在还没有看,但是之前随便翻阅了一下,纸张还是不错的,嗯,618买的.六本书才一百块钱

评分

很好,内容详细,代码介绍很不错

评分

希望能把这方面的知识学扎实..

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有