-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
12/13 新書到! 10/8 新書到! 10/1 新書到! 9/24 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

CLR via C#(第3版)

( 簡體 字)
作者:Jeffrey Richter類別:1. -> 程式設計 -> .NET -> C#
譯者:
出版社:清華大學出版社CLR via C#(第3版) 3dWoo書號: 27299
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:7/29/2010
頁數:775
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787302232599
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

1999年10月,Microsoft的一些人首次向我展示了Microsoft .NET Framework、公共語言運行時(CLR)和C#編程語言。看到所有這一切時,我震驚了,我知道我寫軟件的方式要發生非常大的變化了。他們請我為團隊做一些顧問工作,我當即就同意了。剛開始,我以為.NET Framework是Win32 API和COM上的一個抽象層。然而,隨著我投入越來越多的時間研究它,我意識到它是一個更宏偉的項目。在某種程度上,它是它自己的操作系統。它有自己的內存管理器,自己的安全系統,自己的文件加載器,自己的錯誤處理機制,自己的應用程序隔離邊界(AppDomains)、自己的線程處理模型等。本書解釋了所有這些主題,幫助你為這個平臺高效地設計和實現軟件應用程序及組件。
我花費了大量時間專注于線程處理、并發執行、并行結構、同步等方面的研究。如今,隨著多核計算機越來越普遍,這些主題的重要性日益凸顯。幾年前,我決定專門寫一本講線程處理的書。然而,事情一件接著一件,我的想法一直沒有實現。當我有時間修訂本書的時候,我決定將所有線程處理的內容集成到其中。所以,本書除了全面討論.NET Framework的CLR和C#編程語言,還嵌入了我的關于線程處理的書(第Ⅴ部分“線程處理”)。
我是2009年10月開始寫作本書的,距離第一次接觸.NET Framework和C#正好十年。十幾年來,我作為Microsoft的一名顧問,開發過各種各樣的應用程序,對.NET Framework本身也貢獻良多。作為我自己的公司(Wintellect,http://Wintellect.com)的一名合伙人,我還要為大量客戶工作,幫他們設計軟件、調試軟件、優化軟件和解決他們使用.NET Framework時遇到的問題。正是因為有了這些資歷,所以我才知道人們在使用.NET Framework進行高效率編程時,可能會在什么地方遇到麻煩。貫穿本書的所有主題,你都會看到我的這些經驗之談。
本書面向的讀者
本書旨在解釋如何為.NET Framework開發應用程序和可重用的類。具體地說,我要解釋CLR的工作原理及其提供的功能。另外,我還要討論Framework Class Library(FCL)的各個部分。沒有一本書能完整地解釋FCL——其中包含數以千計的類型,而且這個數字正在以驚人的速度增長。所以,我準備將重點放在每個開發人員都需要注意的核心類型上面。另外,雖然本書不專門講Windows窗體、Windows Presentation Foundation(WPF)、Silverlight、XML Web服務、Web窗體等,但本書描述的技術適用于所有這些應用程序類型。
本書是圍繞Microsoft Visual Studio 2010,.NET Framework 4.0和C# 4.0展開的。由于Microsoft在發布這些技術的新版本時,會試圖保持很大程度的向后兼容性,所以本書描述的許多內容也適用于以前的版本。所有示例代碼都用C#編程語言來演示各種功能的行為。但是,由于CLR可由許多編程語言使用,所以本書內容還是很適合非C#程序員的。?

Microsoft提供了CLR的幾個版本。有桌面/服務器版本,在Microsoft Windows的32位(x86)和64位(x64/IA64 )版本上運行。還有Silverlight版本,它是用和.NET Framework CLR的桌面/服務器版一樣的源代碼庫來生成的。所以,本書描述的一切也適用于生成Silverlight應用程序,只是Silverlight加載程序集的方式有一些區別。.NET Framework有一個“簡化”版本,稱為.NET Compact Framework,它適合Windows手機和運行Windows CE操作系統的其他設備。本書許多內容也適合用于為.NET Compact Framework開發應用程序,但該平臺不是本書的重點。
2001年12月13日,ECMA International(http://www.ecma-international.org/)接納了C#編程語言、一部分CLR以及一部分FCL作為標準。因而形成的標準文檔允許其他組織為其他CPU架構和其他操作系統構建這些技術的ECMA相容版本。事實上,基于ECMA規范,Novell已開發出了Moonlight(http://www.mono-project.com/Moonlight),它是Silverlight (http://Silverlight.net)的一個開源的實現,主要用于Linux和其他基于UNIX/X11的操作系統。本書相當多的內容是圍繞這些標準展開的;所以,如果想實現符合ECMA標準的“運行時”(runtime)和庫,本書也是相當有用的。?

獻辭
獻給Kristin 千言萬語,難以描述我們在一起的日子。我愛我們的家,珍惜我們在一起的所有日子。每天都因為對你的愛而感到充實。
獻給6歲的Aidan和2歲的Grant 你們兩個是我靈感的源泉,是你們教會我游戲和找樂子。看著你們兩個人的成長真是令我驕傲和快樂。能和你們共同生活,我感到非常幸運。我對你們的愛和感謝,遠遠超乎你們的想象!

致謝
沒有許多人的幫助和技術援助,我是不可能寫好這本書的。尤其要感謝我的家人。為了寫一本書,所投入的時間和精力是無法衡量的。我只知道,沒有我的妻子Kristin和兩個兒子Aidan和Grant的支持,根本不可能有這本書的面世。多少次,我們想花些時間一家人小聚,都因為本書而放棄。現在,本書總算告一段落,我們終于有時間做大家愛做的事情了。
針對本書的修訂,我真的得到了一些“高人”的幫助。Christophe Nasarre參與了我的幾本書的出版,在審閱本書并確保我能以最恰當的方式來表達的過程中,表現出了非凡的才能。他對本書的質量有著至關重要的影響。和往常一樣,我和Microsoft Press的教育出版團隊進行了令人愉快的合作。特別感謝Ben Ryan,Valerie Woolley和Devon Musgrave。另外,感謝Jean Findley和Sue McClung的編輯和制作支持。
本書支持
我們盡最大努力保證本書的準確性。一旦有勘誤或更改,它們會添加到一篇Microsoft知識庫文章中,可通過Microsoft幫助和支持網站訪問。Microsoft Press通過以下網址提供支持(包括如何查找知識庫文章的指示):
http://www.microsoft.com/learning/support/books/
如果訪問以上網站或者查看知識庫文章解決不了你的問題,請通過電子郵件把它們發送給Microsoft Press:
mspinput@microsoft.com
注意,上述郵件地址并不提供產品支持。
最后,本書中文版的后期支持(勘誤和資源下載)請訪問譯者博客:
http://transbot.blog.163.com


? 譯者博客http://transbot.blog.163.com也提供了資源下載和勘誤等維護服務。——譯注
? 關于中譯本的問題和建議,請訪問譯者博客或者致函transbot@gmail.com。——譯注



譯 者 序
從事軟件開發的人,都是耐得住寂寞的人。Jeffery不僅耐得住寂寞,還在自己的專業領域取得了很高的造詣。取得了很高的造詣不說,他還愿意將自己的所得與大家分享。愿意和大家分享不說,他還非常實誠,真心想把自己的全部知識都清楚地交待給讀者。字里行間,全是殷殷叮囑。無浮夸之文字,傾心血而寫就,近十年之所悟,盡展現于本書。
讀完這本書,你的心靈會受到巨大的震撼。原因很簡單,以前許多似懂非懂的關鍵概念,現在都變得清晰明了;以前自以為是的一些做法,現在都得到徹底糾正;以前艱苦摸索的一些編程技巧,現在變得就像1+1一樣簡單。
Jeffery最擅長的就是把最基本的東西講清楚。你以前或許知道1+1等于2,但他會把1+1為什么等于2講得明明白白。最終你會有一種頓悟的感覺,然后自動地就會知道1+2等于幾,2+2等于幾。不需要再去翻閱其他教科書查詢結果。
如果不出意外,這當是Jeffery的封筆之作。原因很簡單,他付出了實在太多。為了保證這本書(以及他的其他許多著作)的含金量,他在寫作的時候非常投入,而且每一句話,每一個知識點的組織,他都會做到盡善盡美。也許你也曾經有過這樣的體驗,那就是在專心做一些事情的時候,對身邊發生的其他事情反應可能非常遲鈍。因此,必然有可能冷落了家人,或者耽誤了自己的其他一些事情。
本書基于CLR via C#,2nd Edition,在保持上一版精華內容的同時,進行了大量修訂,并添加了大量和C# 4.0的新特性以及線程處理有關的內容。翻譯這一版的過程中,我對上一版也進行了勘誤,其中有許多都是熱心讀者提交的。在此要對他們表示感謝!
一本沒有后期維護的書,不算是一本好書。即使如本書原版,也維護了一份很長的勘誤表,我本人也為其貢獻良多。本書中文版將延續我一直以來堅持的風格,建立專門的頁面對它進行維護,以提供資源下載和勘誤等服務。請大家繼續前往我的博客(http://transbot.blog.163.com),發表關于本書的意見和建議。
翻譯過程中,感謝我的家人和朋友的諸多關懷和幫助,尤其要感謝我的乖女兒周子衿。這個學期,對她來說至關重要!
最后,如同往常一樣,我要說所有的功勞都要歸于作者,所有的錯誤都要歸于譯者。歡迎大家批評指正。

——周靖@北京




  

  



  


內容簡介:

    本書針對CLR和.NET Framework 4.0進行深入、全面的探討,并結合實例介紹了如何利用它們進行設計、開發和調試。全書5部分29章。第Ⅰ部分介紹CLR基礎,第Ⅱ部分解釋如何設計類型,第Ⅲ部分介紹基本類型,第Ⅳ部分以實用特性為主題,第Ⅴ部分花大量篇幅重點介紹線程處理。 
    通過本書的閱讀,讀者可以掌握CLR和.NET Framework的精髓,輕松、高效地創建高性能應用程序。


目錄:

第I部分 CLR基礎

第1章 CLR的執行模型 3
1.1 將源代碼編譯成托管模塊 3
1.2 將托管模塊合并成程序集 6
1.3 加載公共語言運行時 8
1.4 執行程序集的代碼 10
1.4.1 IL和驗證 15
1.4.2 不安全的代碼 16
1.5 本地代碼生成器:NGen.exe 18
1.6 Framework類庫 20
1.7 通用類型系統 22
1.8 公共語言規范 24
1.9 與非托管代碼的互操作性 28
第2章 生成、打包、部署和管理應用
程序及類型 29
2.1 .NET Framework部署目標 29
2.2 將類型生成到模塊中 31
響應文件 32
2.3 元數據概述 34
2.4 將模塊合并成程序集 39
2.4.1 使用Visual Studio IDE將
程序集添加到項目中 45
2.4.2 使用程序集鏈接器 46
2.4.3 為程序集添加資源文件 48
2.5 程序集版本資源信息 49
2.6 語言文化 53
2.7 簡單應用程序部署(私有部署的
程序集) 54
2.8 簡單管理控制(配置) 55
第3章 共享程序集和強命名程序集 59
3.1 兩種程序集,兩種部署 60
3.2 為程序集分配強名稱 61
3.3 全局程序集緩存 65
3.4 在生成的程序集中引用一個強命名
程序集 67
3.5 強命名程序集能防范篡改 69
3.6 延遲簽名 70
3.7 私有部署強命名程序集 72
3.8 “運行時”如何解析類型引用 73
3.9 高級管理控制(配置) 76
發布者策略控制 78


第II部分 設計類型

第4章 類型基礎 83
4.1 所有類型都從System.Object派生 83
4.2 類型轉換 85
4.3 命名空間和程序集 89
4.4 運行時的相互聯系 92
第5章 基元類型、引用類型和值類型 101
5.1 編程語言的基元類型 101
5.2 引用類型和值類型 108
5.3 值類型的裝箱和拆箱 113
5.3.1 使用接口更改已裝箱值類型
中的字段(以及為什么不應該
這樣做) 124
5.3.2 對象相等性和同一性 127
5.4 對象哈希碼 129
5.5 dynamic基元類型 131
第6章 類型和成員基礎 137
6.1 類型的各種成員 137
6.2 類型的可見性 140
友元程序集 140
6.3 成員的可訪問性 142
6.4 靜態類 143
6.5 分部類、結構和接口 145
6.6 組件、多態和版本控制 146
6.6.1 CLR如何調用虛方法、屬性
和事件 148
6.6.2 合理使用類型的可見性和
成員的可訪問性 151
6.6.3 對類型進行版本控制時的
虛方法的處理 154
第7章 常量和字段 159
7.1 常量 159
7.2 字段 160
第8章 方法 165
8.1 實例構造器和類(引用類型) 165
8.2 實例構造器和結構(值類型) 168
8.3 類型構造器 171
8.4 操作符重載方法 176
8.5 轉換操作符方法 179
8.6 擴展方法 182
8.6.1 規則和原則 184
8.6.2 用擴展方法擴展各種類型 185
8.6.3 ExtensionAttribute類 187
8.7 分部方法 188
第9章 參數 191
9.1 可選參數和命名參數 191
9.1.1 規則和原則 192
9.1.2 DefaultParameterValueAttribute
和OptionalAttribute 194
9.2 隱式類型的局部變量 194
9.3 以傳引用的方式向方法傳遞參數 196
9.4 向方法傳遞可變數量的參數 201
9.5 參數和返回類型的指導原則 203
9.6 常量性 205
第10章 屬性 207
10.1 無參屬性 207
10.1.1 自動實現的屬性 210
10.1.2 合理定義屬性 211
10.1.3 對象和集合初始化器 214
10.1.4 匿名類型 215
10.1.5 System.Tuple類型 218
10.2 有參屬性 220
10.3 調用屬性訪問器方法時的性能 225
10.4 屬性訪問器的可訪問性 225
10.5 泛型屬性訪問器方法 225
第11章 事件 227
11.1 設計要公開事件的類型 228
11.1.1 第一步:定義類型來容納所有
需要發送給事件通知接收者
的附加信息 229
11.1.2 第二步:定義事件成員 229
11.1.3 第三步:定義負責引發事件
的方法來通知事件的登記
對象 231
11.1.4 第四步:定義方法將輸入
轉化為期望事件 233
11.2 編譯器如何實現事件 233
11.3 設計偵聽事件的類型 235
11.4 顯式實現事件 237
第12章 泛型 241
12.1 Framework類庫中的泛型 245
12.2 Wintellect的Power Collections庫 246
12.3 泛型基礎結構 247
12.3.1 開放類型和封閉類型 247
12.3.2 泛型類型和繼承 249
12.3.3 泛型類型同一性 251
12.3.4 代碼爆炸 252
12.4 泛型接口 252
12.5 泛型委托 253
12.6 委托和接口的逆變和協變泛型
類型實參 254
12.7 泛型方法 256
12.8 泛型和其他成員 258
12.9 可驗證性和約束 259
12.9.1 主要約束 261
12.9.2 次要約束 262
12.9.3 構造器約束 263
12.9.4 其他可驗證性問題 264


第Ⅲ部分 基本類型

第13章 接口 267
13.1 類和接口繼承 267
13.2 定義接口 268
13.3 繼承接口 269
13.4 關于調用接口方法的更多探討 271
13.5 隱式和顯式接口方法實現(幕后
發生的事情) 272
13.6 泛型接口 274
13.7 泛型和接口約束 276
13.8 實現多個具有相同方法名和簽名
的接口 277
13.9 用顯式接口方法實現來增強編譯時
類型安全性 278
13.10 謹慎使用顯式接口方法實現 280
13.11 設計:基類還是接口 282
第14章 字符、字符串和文本處理 287
14.1 字符 287
14.2 System.String類型 290
14.2.1 構造字符串 290
14.2.2 字符串是不可變的 292
14.2.3 比較字符串 293
14.2.4 字符串留用 298
14.2.5 字符串池 301
14.2.6 檢查字符串中的字符和文本
元素 301
14.2.7 其他字符串操作 303
14.3 高效率構造字符串 304
14.3.1 構造StringBuilder對象 304
14.3.2 StringBuilder的成員 305
14.4 獲取對象的字符串表示:ToString 307
14.4.1 指定具體的格式和語言
文化 308
14.4.2 將多個對象格式成一個
字符串 311
14.4.3 提供定制格式化器 313
14.5 解析字符串來獲取對象:Parse 315
14.6 編碼:字符和字節的相互轉換 317
14.6.1 字符和字節流的編碼
和解碼 322
14.6.2 Base-64字符串編碼
和解碼 323
14.7 安全字符串 324
第15章 枚舉類型和位標志 327
15.1 枚舉類型 327
15.2 位標志 332
15.3 向枚舉類型添加方法 335
第16章 數組 337
16.1 初始化數組元素 339
16.2 數組轉型 341
16.3 所有數組都隱式派生自
System.Array 343
16.4 所有數組都隱式實現IEnumerable,
Icollection和IList 344
16.5 數組的傳遞和返回 345
16.6 創建下限非零的數組 346
16.7 數組的訪問性能 347
16.8 不安全的數組訪問和固定大小的
數組 351
第17章 委托 353
17.1 初識委托 353
17.2 用委托回調靜態方法 355
17.3 用委托回調實例方法 357
17.4 委托揭秘 357
17.5 用委托回調許多方法(委托鏈) 361
17.5.1 C#對委托鏈的支持 365
17.5.2 取得對委托鏈調用的更多
控制 365
17.6 委托定義太多(泛型委托) 368
17.7 C#為委托提供的簡化語法 369
17.7.1 簡化語法1:不需要構造委托
對象 369
17.7.2 簡化語法2:不需要定義回調
方法 370
17.7.3 簡化語法3:局部變量不需要
手動包裝到類中即可傳給
回調方法 373
17.8 委托和反射 375
第18章 定制attribute 379
18.1 使用定制attribute 379
18.2 定義自己的attribute類 382
18.3 attribute的構造器和字段/屬性的
數據類型 386
18.4 檢測定制attribute 387
18.5 兩個attribute實例的相互匹配 391
18.6 檢測定制attribute時不創建從
Attribute派生的對象 393
18.7 條件attribute類 396
第19章 可空值類型 399
19.1 C#對可空值類型的支持 401
19.2 C#的空接合操作符 403
19.3 CLR對可空值類型的特殊支持 404
19.3.1 可空值類型的裝箱 404
19.3.2 可空值類型的拆箱 405
19.3.3 通過可空值類型調用
GetType 405
19.3.4 通過可空值類型調用接口
方法 405


第Ⅳ部分 核心機制

第20章 異常和狀態管理 409
20.1 定義“異常” 409
20.2 異常處理機制 411
20.2.1 try塊 412
20.2.2 catch塊 412
20.2.3 finally塊 414
20.3 System.Exception類 417
20.4 FCL定義的異常類 420
20.5 拋出異常 422
20.6 定義自己的異常類 423
20.7 用可靠性換取開發效率 425
20.8 指導原則和最佳實踐 433
20.8.1 善用finally塊 433
20.8.2 不要什么都捕捉 435
20.8.3 得體地從異常中恢復 436
20.8.4 發生不可恢復的異常時
回滾部分完成的操作——
維持狀態 436
20.8.5 隱藏實現細節來維系契約 437
20.9 未處理的異常 440
20.10 對異常進行調試 444
20.11 異常處理的性能問題 446
20.12 約束執行區域(CER) 448
20.13 代碼契約 451
第21章 自動內存管理(垃圾回收) 459
21.1 理解垃圾回收平臺的基本工作
原理 459
21.2 垃圾回收算法 463
21.3 垃圾回收與調試 466
21.4 使用終結操作來釋放本地資源 469
21.4.1 使用CriticalFinalizerObject
類型確保終結 470
21.4.2 SafeHandle類型及其派生
類型 471
21.4.3 使用SafeHandle類型與
非托管代碼進行互操作 473
21.5 對托管資源使用終結操作 475
21.6 什么會導致Finalize方法被調用 477
21.7 終結操作揭秘 478
21.8 Dispose模式:強制對象清理
資源 481
21.9 使用實現了Dispose模式的類型 485
21.10 C#的using語句 488
21.11 一個有趣的依賴性問題 490
21.12 手動監視和控制對象的生存期 491
21.13 對象復活 501
21.14 代 503
21.15 用于本地資源的其他垃圾回收
功能 508
21.16 預測需求大量內存的操作能否
成功 512
21.17 編程控制垃圾回收器 513
21.18 線程劫持 516
21.19 垃圾回收模式 517
21.20 大對象 520
21.21 監視垃圾回收 520
第22章 CLR寄宿和AppDomain 523
22.1 CLR寄宿 523
22.2 AppDomain 526
22.3 卸載AppDomain 538
22.4 監視AppDomain 540
22.5 AppDomain FirstChance異常通知 541
22.6 宿主如何使用AppDomain 541
22.6.1 可執行應用程序 542
22.6.2 Microsoft Silverlight富
Internet應用程序 542
22.6.3 Microsoft ASP.NET Web窗體
和XML Web服務應用程序 542
22.6.4 Microsoft SQL Server 543
22.6.5 更多的用法只局限于你
自己的想象力 543
22.7 高級宿主控制 544
22.7.1 使用托管代碼管理CLR 544
22.7.2 編寫健壯的宿主應用程序 544
22.7.3 宿主如何拿回它的線程 546
第23章 程序集加載和反射 549
23.1 程序集加載 549
23.2 使用反射構建動態可擴展應用
程序 554
23.3 反射的性能 555
23.3.1 發現程序集中定義的類型 556
23.3.2 類型對象的準確含義 556
23.3.3 構建Exception派生類型的
一個層次結構 558
23.3.4 構造類型的實例 560
23.4 設計支持加載項的應用程序 562
23.5 使用反射發現類型的成員 564
23.5.1 發現類型成員 565
23.5.2 BindingFlags:篩選返回的
成員種類 569
23.5.3 發現類型的接口 570
23.5.4 調用類型的成員 571
23.5.5 一次綁定,多次調用 575
23.5.6 使用綁定句柄來減少進程的
內存耗用 581
第24章 運行時序列化 585
24.1 序列化/反序列化快速入門 586
24.2 使類型可序列化 590
24.3 控制序列化和反序列化 592
24.4 格式化器如何序列化類型實例 595
24.5 控制序列化/反序列化的數據 597
24.6 流上下文 603
24.7 將類型序列化為不同的類型以及
將對象反序列化為不同的對象 604
24.8 序列化代理 606
代理選擇器鏈 609
24.9 反序列化對象時重寫程序集和/或
類型 610

第Ⅴ部分 線程處理

第25章 線程基礎 615
25.1 Windows為什么要支持線程 615
25.2 線程開銷 616
25.3 停止瘋狂 620
25.4 CPU發展趨勢 622
25.5 NUMA架構的機器 623
25.6 CLR線程和Windows線程 625
25.7 使用專用線程執行異步的計算
限制操作 625
25.8 使用線程的理由 627
25.9 線程調度和優先級 629
25.10 前臺線程和后臺線程 634
25.11 繼續學習 635
第26章 計算限制的異步操作 637
26.1 CLR線程池基礎 638
26.2 執行簡單的計算限制操作 639
26.3 執行上下文 640
26.4 協作式取消 642
26.5 任務 645
26.5.1 等待任務完成并獲取它的
結果 646
26.5.2 取消任務 648
26.5.3 一個任務完成時自動啟動
一個新任務 649
26.5.4 任務可以啟動子任務 651
26.5.5 任務內部揭秘 652
26.5.6 任務工廠 653
26.5.7 任務調度器 655
26.6 Parallel的靜態For,ForEach和
Invoke方法 657
26.7 并行語言集成查詢(PLINQ) 660
26.8 執行定時計算限制操作 663
26.9 線程池如何管理線程 665
26.9.1 設置線程池限制 665
26.9.2 如何管理工作者線程 666
26.10 緩存線和偽共享 667
第27章 I/O限制的異步操作 671
27.1 Windows如何執行I/O操作 671
27.2 CLR的異步編程模型(APM) 675
27.3 AsyncEnumerator類 679
27.4 APM和異常 682
27.5 應用程序及其線程處理模型 683
27.6 異步實現服務器 687
27.7 APM和計算限制的操作 687
27.8 APM的注意事項 689
27.8.1 在沒有線程池的前提下
使用APM 689
27.8.2 總是調用EndXxx方法,而且
只調用一次 690
27.8.3 調用EndXxx方法時總是
使用相同的對象 690
27.8.4 為BeginXxx和EndXxx方法
使用ref,out和params
實參 691
27.8.5 不能取消異步I/O限制
操作 691
27.8.6 內存消耗 691
27.8.7 有的I/O操作必須同步
完成 691
27.8.8 FileStream特有的問題 692
27.9 I/O請求優先級 693
27.10 將IAsyncResult APM轉換
為Task 695
27.11 基于事件的異步模式 696
27.11.1 將EAP轉換為Task 698
27.11.2 APM和EAP的對比 699
27.12 編程模型的泥沼 700
第28章 基元線程同步構造 703
28.1 類庫和線程安全 705
28.2 基元用戶模式和內核模式構造 706
28.3 用戶模式構造 707
28.3.1 易失構造 708
28.3.2 互鎖構造 713
28.3.3 實現簡單的Spin Lock 717
28.3.4 Interlocked Anything模式 720
28.4 內核模式構造 722
28.4.1 Event構造 725
28.4.2 Semaphore構造 727
28.4.3 Mutex構造 728
28.4.4 在一個內核構造可用時調用
一個方法 730
第29章 混合線程同步構造 733
29.1 一個簡單的混合鎖 733
29.2 自旋、線程所有權和遞歸 735
29.3 混合構造的大雜燴 737
29.3.1 ManualResetEventSlim類
和SemaphoreSlim類 737
29.3.2 Monitor類和同步塊 738
29.3.3 ReaderWriterLockSlim類 743
29.3.4 OneManyLock類 745
29.3.5 CountdownEvent類 747
29.3.6 Barrier類 747
29.3.7 線程同步構造小結 748
29.4 著名的雙檢鎖技術 750
29.5 條件變量模式 754
29.6 用集合防止占有鎖太長的時間 756
29.7 并發集合類 760







  

  



  

序: