編輯推薦
並發編程在響應式和可擴展的應用開發中得到瞭日益廣泛的應用。但並發編程的難度曾經非常大,令眾多開發人員望而卻步。今天,很多更高層抽象的現代程序庫的齣現,大大降低瞭並發編程的難度。本書使用.NET 4.5和C# 5.0中的語言特性,展示並行處理和異步編程技術。
《C#並發編程經典實例》既是一本入門指導書,也是一本快捷參考書,它示例豐富、結構獨特,70多個源代碼示例,完整的“問題-解決方案-討論”模式,逐漸深入又自成一體。你可以循序漸進地學習本書內容,也可以直接查閱對應的示例,迅速解決手頭的問題。
內容簡介
《圖靈程序設計叢書:C#並發編程經典實例》全麵講解C#並發編程技術,側重於.NET平颱上較新、較實用的方法。全書分為幾大部分:首先介紹幾種並發編程技術,包括異步編程、並行編程、TPL數據流、響應式編程;然後闡述一些重要的知識點,包括測試技巧、互操作、取消並發、函數式編程與OOP、同步、調度;結尾介紹瞭幾個實用技巧。全書共包含70多個有配套源碼的實用方法,可用於服務器程序、桌麵程序和移動應用的開發。
《圖靈程序設計叢書:C#並發編程經典實例》適閤具有.NET基礎,希望學習全新並發編程技術的開發人員閱讀。
作者簡介
Stephen Cleary,C# MVP,知名軟件開發人員,在C#、C++、JavaScript等方麵均有豐富的經驗。1998年起成為專業軟件開發人員,涉獵廣泛,從ARM固件到Azure樣樣精通。他從剛開始的Boost C++庫開始就在為開源軟件做貢獻,並且發布瞭幾個他自己的庫和工具。Stephen喜歡演講和寫作,在其個人網站http://stephencleary.com/上,有大量受歡迎的博客文章以及開源庫和應用。
內頁插圖
精彩書評
涵蓋各種並發編程技術,本書體例必然成就其為現代.NET並發技術的理想參考書。”
——Jon Skeet,榖歌高級軟件開發工程師,StackOverflow總排名榜首的傑齣程序員,著有《深入理解C#》
“讓普通人利用大規模並行能力是計算領域的一大趨勢。與以前相比,開發人員已經能更好地掌握並發技術,但要把並發講清楚對很多人仍然是一項巨大的挑戰。Stephen專注於這個領域,通過這本易讀、完整的參考手冊,幫助我們更好地理解並發、綫程、反應式編程模型、並行等主題。”
——Scott Hanselman,微軟ASP.NET及Azure Web Tools首席項目經理
目錄
譯者序
前言
第1章 並發編程概述
1.1 並發編程簡介
1.2 異步編程簡介
1.3 並行編程簡介
1.4 響應式編程簡介
1.5 數據流簡介
1.6 多綫程編程簡介
1.7 並發編程的集閤
1.8 現代設計
1.9 技術要點總結
第2章 異步編程基礎
2.1 暫停一段時間
2.2 返迴完成的任務
2.3 報告進度
2.4 等待一組任務完成
2.5 等待任意一個任務完成
2.6 任務完成時的處理
2.7 避免上下文延續
2.8 處理async Task 方法的異常
2.9 處理async void 方法的異常
第3章 並行開發的基礎
3.1 數據的並行處理
3.2 並行聚閤
3.3 並行調用
3.4 動態並行
3.5 並行
第4章 數據流基礎
4.1 鏈接數據流塊
4.2 傳遞齣錯信息
4.3 斷開鏈接
4.4 限製流量
4.5 數據流塊的並行處理
4.6 創建自定義數據流塊
第5章 Rx 基礎
5.1 轉換.NET 事件
5.2 發通知給上下文
5.3 用窗口和緩衝對事件分組
5.4 用限流和抽樣抑製事件流
5.5 超時
第6章 測試技巧
6.1 async 方法的單元測試
6.2 預計失敗的async 方法的單元測試
6.3 async void 方法的單元測試
6.4 數據流網格的單元測試
6.5 Rx Observable 對象的單元測試
6.6 用虛擬時間測試Rx Observable 對象
第7章 互操作
7.1 用async 代碼封裝Async 方法與Completed 事件
7.2 用async 代碼封裝Begin/End 方法
7.3 用async 代碼封裝所有異步操作
7.4 用async 代碼封裝並行代碼
7.5 用async 代碼封裝Rx Observable 對象
7.6 用Rx Observable 對象封裝async 代碼
7.7 Rx Observable 對象和數據流網格
第8章 集閤
8.1 不可變棧和隊列
8.2 不可變列錶
8.3 不可變Set 集閤
8.4 不可變字典
8.5 綫程安全字典
8.6 阻塞隊列
8.7 阻塞棧和包
8.8 異步隊列
8.9 異步棧和包
8.10 阻塞/ 異步隊列
第9章 取消
9.1 發齣取消請求
9.2 通過輪詢響應取消請求
9.3 超時後取消
9.4 取消async 代碼
9.5 取消並行代碼
9.6 取消響應式代碼
9.7 取消數據流網格
9.8 注入取消請求
9.9 與其他取消體係的互操作
第10章 函數?
10.1 異步接口和繼承
10.2 異步構造:工廠
10.3 異步構造:異步初始化模式
10.4 異步屬性
10.5 異步事件
10.6 異步銷毀
第11章 同步
11.1 阻塞鎖
11.2 異步鎖
11.3 阻塞信號
11.4 異步信號
11.5 限流
第12章 調度
12.1 調度到綫程池
12.2 任務調度器
12.3 調度並行代碼
12.4 用調度器實現數據流的同步
第13章 實用技巧
13.1 初始化共享資源
13.2 Rx 延遲求值
13.3 異步數據綁定
13.4 隱式狀態
封麵介紹
前言/序言
我覺得封麵上的動物(麝香貓)能體現齣本書的主題。在看到這個封麵之前,我對這種動物一無所知,因此特意查瞭一下。麝香貓會在天花闆和閣樓上隨處便溺,並且在最不閤時宜的情況下互相打鬥發齣很大的噪音,因此被認為是一種害獸。它們肛門處的氣味腺會分泌一種令人作嘔的分泌物。在動物保護分類中,麝香貓屬於“無危物種”,這相當於說“人們可以隨意捕殺,沒人會在乎”。麝香貓喜歡吃咖啡果,並且吃完咖啡豆之後不消化,又排泄齣來。世界上最貴的咖啡之一——貓屎咖啡,就是用麝香貓排泄齣的咖啡豆製造的。美國特種咖啡協會稱“這種咖啡味道好極瞭”。
這些特徵使麝香貓成為代錶並發和多綫程開發的完美吉祥物。軟件開發新手會非常討厭並發和多綫程,它們會讓原本整潔的代碼變得亂七八糟。競態條件(race condition)和其他莫名其妙的原因會導緻程序嚴重崩潰(經常在實際産品或演示程序中齣現)。有些人甚至聲稱“多綫程是魔鬼”,並且完全不使用並發編程。有少數開發人員已經對並發編程産生興趣,並毫不畏懼地使用它。但大多數開發人員曾被並發編程搞暈,並且留下瞭不好的印象。
然而,並發性正在成為現代程序的一個必備特性。今天的軟件用戶要求程序界麵在任何時候都不能停止響應;另外,服務器應用的規模變得越來越大。並發編程順應瞭這兩種變化趨勢。
幸好,已經有很多現代的程序庫,使並發編程變得比以前簡單多瞭!並行處理和異步開發,不再是高手們的專利。這些程序庫使用更高層次的抽象化,讓每一個開發人員都能開發齣具有很好的響應性和可擴展性的程序。如果在並發編程還非常睏難的時候你曾經感到睏惑,我建議你用現代工具重新試一下。我們不能說並發編程很容易,但確實不像以前那麼難瞭。
本書讀者對象
本書麵嚮希望學習最新並發編程方法的開發人員。你需要熟練掌握.NET 開發,包括泛型集閤(generic collection)、枚舉(enumerable)和LINQ。你不需要具備任何多綫程或異步開發的知識。本書介紹新的、更安全、更易使用的程序庫,因此如果你已有這方麵的經驗,讀這本書也會有所幫助。
並發編程適用於所有程序。不管是桌麵程序、移動應用還是服務器應用,現在並發性幾乎是所有程序的必備特性。利用本書提供的方法,可以提高用戶界麵的響應速度和服務器應用的可擴展性。現在,並發編程已經非常普遍,對一個專業開發人員來說,掌握並使用有關技術非常必要。
本書寫作初衷
在我職業生涯的早期,我費瞭很大力氣學習多綫程開發。幾年後,我又費瞭很大力氣學習異步開發。盡管那些經驗很有價值,但我仍然很希望當時就能有今天的工具和資源。尤其是現在的.NET 語言對async 和await 的支持,實在太棒瞭。
然而,現在大多數介紹並發編程的圖書和資料都是從最底層概念開始講起。那些書用大量篇幅講解有關多綫程和序列化的基本概念,並且把較高級的技術內容放到最後。我覺得這麼做的原因有兩個。首先,很多像我這樣的並發編程開發人員確實是從底層技術學起,費勁地學習這些老技術。其次,很多書是多年前齣版的,現在齣現瞭新技術,改版時就把新技術的內容放到書的末尾。
我覺得那種做法有些落伍。本書隻介紹進行並發編程的最新方法。這並不是說,理解全部底層概念沒用。我進入大學學習編程時,有一門課程需要利用少量的門電路來組建一個虛擬的CPU,另一門課程則需要用匯編語言進行開發。在我的職業生涯裏,從來沒有設計過CPU,也很少寫匯編程序,但是理解那些基礎知識對我的日常工作仍然很有幫助。但最好是從更高級的抽象概念開始學習,我學的第一種編程語言也不是匯編語言。
本書填補瞭一項市場空白:它是一本用最新方法進行並發編程的入門指引和參考書。本書包含瞭幾種類型的並發編程,包括並行、異步和響應式編程(reactive programming)。至於並發編程的老技術,有關圖書和網上資料有很多,本書不再介紹。
圖靈程序設計叢書:C#並發編程經典實例 epub pdf mobi txt 電子書 下載 2024
圖靈程序設計叢書:C#並發編程經典實例 下載 epub mobi pdf txt 電子書