Jeffrey Richter在最新的随笔中透露,CLR via C# 3rd Edition已经提交出版社编辑,并将于明年3月22日Visual Studio 2010发布时同步出版。
本书包含Jeffrey最近5年来的积累,并且涵盖.NET Framework 3.0、3.5和4.0。在第二版中他用两个章节介绍了多线程方面的知识,而第三版的第V部分用5章的篇幅对多线程进行描述。
第三版的目录及新增内容如下:
增加了/optimize和/debug的讨论,及其相互关系。
改进了关于Win32 manifest信息和版本资源信息的讨论。
增加了关于TypeForwardedToAttribute和TypeForwardedFromAttribute的内容。
无新话题。
增加了对checked和unchecked代码、BigInterger类型以及C# 4.0 dynamic类型的讨论。
无新话题。
无新话题。
新增了扩展方法和分部方法(partial methods)的讨论。
新增了可选/命名(optional/named)参数和隐藏类型局部变量的讨论。
新增了自动属性、属性和Visual Studio调试器、对象和集合初始化器、匿名类型、System.Tuple类型和ExpandoObject类型的讨论。
Added discussion of events and thread-safety as well as showing a cool extension method to simplify the raising of an event.
新增讨论了委托和接口泛型类型参数的不同。
无新话题。
无新话题。
新增了枚举和类型中访问枚举类型实例的方法。
新增了初始化数组元素的章节。
新增了关于使用泛型委以托避免定义新的泛型类型以及Lambda表达式的讨论。
无新话题。
新增了关于性能的讨论。
本章全部重写。主要是关于异常处理和状态管理。还包含了代码契约和constrained execution regions(CERs)的讨论。本章还包含了一个新的小节,讨论了高效代码和可靠代码的取舍问题。
新增了关于C#固定状态及其如何在堆中固定对象的讨论(不是很了解,可能翻译不是很准确)。重写了关于弱委托的代码,可以在任何暴露了事件成员的类中使用(该类不支持若委托本身)。讨论了新增的ConditionalWeakTable类,GC收集模式,GC通知,垃圾收集模式和一些潜在的模式。还包含了一个示例,演示应用程序如何接收第0代或第2代收集发生时的通知。
新增了关于支持在单一进程中加载多个CLR的讨论。新增了关于使用MarshalByRefObject衍生类的性能的章节。基本上重写了跨应用程序域通信的章节。新增了关于应用程序域监听和first chance exception通知的章节。更新了关于AppDomainManager类的一节。
新增了关于如何部署包含内嵌依赖程序集的单一文件的一节,以及比较反射调用、bind/invode、bind/create、delegate/invoke、C#动态类型的一节。
全新的一章。
全新的一章,介绍了Windows支持线程的原因、线程开销、CPU动态、NUMA架构、CLR线程和Windows线程的关系、Thread类、使用线程的理由、线程调度和优先级、前台线程和后台线程。
全新的一章,解释了CLR线程池。涵盖了所有.NET 4.0新的构建,包括cooperative cancellation、Task、aralle类、并行语言继承查询、timer、线程池如何管理线程、cache lines和false sharing。
全新的一章,解释了Windows如何执行同步和异步I/O操作。然后,研究了CLR异步编程模型、我的AysncEnumerator类、APM和异常、应用程序和线程模型、实现了一个异步服务、APM和Compute-bound操作、APM、I/O请求优先级、将APM转换为Task、基于事件的异步模式、programming model soup。
全新的一章,讨论了类库和线程安全、primitive user-mode、kernel-mode构造和data alignment。
全新的一章,讨论了不同的混合构造,如ManualResetEventSlim、SemaphoreSlim、CountdownEvent、Barrier、ReaderWriterLock(Slim)、OneManyResourceLock、Monitor,3种用于处理double-check锁的方式,.NET 4.0中Lazy和LazyInitializer类,条件变量模式,.NET 4.0的同步集合类,以及ReaderWriterGate和SyncGate类。