基本信息
编辑推荐
进程通信的多种实现手段
深入了解线程、详解线程同步对象
掌握跨线程更新可视化用户界面的原理与编程技巧
基于任务并行库与PLINQ开发并行计算程序
使用代码协定与单元测试工具提升代码的质量
基于Marlaged Extensibility FrarTleworK开发高扩展性的系统
C#4动态编程特性与DLR技术内幕
内容简介
作译者
金旭亮,走自学之路,沉浸于软件技术世界16年,无师自通,最初“涉猎甚广”,后专注于微软.NET平台。目前已当了8年的“教书先生”,致力于软件技术的应用与推广,为计算机专业学生和程序员提供软件技术学习指导,为企业提供.NET技术培训服务。现执教于北京理工大学计算机学院。高度关注中国计算机教育问题,在北京理工大学主讲软件开发系列课程,其所进行的教学改革探索实践曾引发广泛的关注。
目录
第4篇 进程、线程技术与并行计算1
第15章 进程与进程间通信3
15.1 操作系统的进程与线程管理3
15.2 进程的启动与终止17
15.3 进程通信21
第16章 多线程开发技术基础37
16.1 直观了解多线程编程37
16.2 线程的创建、启动和停止39
16.3 Windows操作系统线程调度策略47
16.4 向线程函数传送信息的方式50
16.5 线程统一取消模型54
第17章 线程同步与并发访问共享资源63
17.1 死锁与数据存取错误64
17.2 锁67
17.3 等待句柄75
17.4 倒计时计数器——CountDownEvent81
17.5 分阶段同步——Barrier83
17.6 线程池85
17.7 线程局部存储区89
前言
回想2001年前后,Java如日中天,我周围几乎所有的人都在或准备学习Java,而也是在这个时候,我初次接触到了C#和.NET,立即被它们吸引,坚信.NET开发平台日后一定大有发展潜力。9年过去了,事实证实了我当年的预测:.NET不断汲取最新的软件技术成果,一步一个脚印,业已成为当今主流的软件开发平台之一,与Java平分秋色。2010年发布的.NET 4.0,更是引入了众多的新技术,堪称为.NET发展史上具有里程碑意义的版本。
任何一名对.NET技术有一定认识的软件开发者都承认,以.NET平台所包容的技术之多、之广,称其为“博大精深”并不为过,而且它还处于不断的发展和变化过程中。.NET技术家族的急速扩充与快速成长给所有.NET开发者带来了巨大的挑战,如何跟上技术发展的步伐,迎接新技术的挑战,是每个.NET软件工程师所必须面对的问题。
在多年的.NET技术学习、探索和应用过程中,笔者渐渐有了一些体会和感触,我发现虽然.NET技术一直在变化中,但这种变化是有规律可循的,“变化当中有不变”,把握了这些规律,将不再害怕与抱怨新技术的持续出现和老知识的陈旧与过时,就会以一种更平稳的心态去学习新的东西,去探索新的领域,面对新技术,不再是惶恐,而会代之以兴奋。
本书所展示给读者的,就是这么些年来我对.NET技术学习、探索和应用的心得,我想尝试着揭开.NET的面纱,告诉读者:
有些看上去很简单的东西,其实并不简单!
有些“司空见惯”的东西,其实你可能忽略掉了许多重要的地方!
有些“新”技术,其实不过是“旧瓶装新酒”罢了!
有些知识和工具是如此地有用,用好它们,你将不再困惑于在开发中遇到的种种“奇怪”现象!
有些技术是如此地关键,不掌握好它们,你将在开发中处处受限!
有些很复杂的技术,一旦你花点时间去了解一些必要的背景知识,一旦你下决心钻到它内部去探索运作机理,就会发现掌握它其实并没有想象地那么困难!
……
期望笔者写的书能帮助读者更好地理解.NET平台与技术,更好地理解面向对象的理论,更好地理解软件开发这件事。
下面,我先就读者所关心的几个问题作简要回答,然后再介绍本书的使用方法。
读者问答
1. 这本书是写给哪些人看的?
本书分为《基础篇》与《应用篇》两卷,以满足不同类型读者的阅读需求。
《基础篇》不适合于那些对.NET软件开发技术一无所知的人阅读。
《基础篇》最合适的读者群是拥有1~2年开发经验的人,无论是在业界还是在学校,也无论是职业程序员还是软件开发爱好者,只要对.NET平台的开发技术已经有了一定的感性认识,希望能进一步地提升自己的开发能力,拓展和加深对.NET平台技术的认识,就适合阅读。
《应用篇》则选取了在实际开发中有着广泛应用前景,同时又在.NET 4.0中有着重要创新的“多线程与并行计算”、“托管可扩展性框架”和“动态编程特性”等内容进行深入和系统的介绍,要求读者必须具备一定的开发经验,并且切实掌握《基础篇》所介绍的技术。
序言
芝麻开门,入室登堂
.NET技术浩如烟海,没有任何一本书可以穷尽它,因为作为一个主流开发平台,它涵盖的内容实在太丰富了。然而,当我阅读完金旭亮先生的这本著作(《基础篇》+《应用篇》),我开始对我的论断产生了怀疑。不错,本书依旧没有能够穷尽.NET,然而它在技术广度与深度的结合方面,或许称得上是无与伦比的。可以说,.NET平台的各项重要技术,包括.NET 4.0的新特性,在本书中都得到了淋漓尽致的释放;最重要的是,作者没有人云亦云,满足于技术的表层,而是通过使用ildasm和Reflector对.NET的类库进行了深度分析,知其然而后知其所以然,这种求真求实的探索态度殊为可贵。
所以,本书绝对不是那种大而全、号称从入门到精通,三个月速成编程高手那样如“终南捷径”般的红宝书。关键的一点是,如何平衡好“专”与“博”之间的关系?对于技术作家而言,此难题不亚于理解技术本身的难度。然而,金旭亮总能处理得游刃有余。这不得不说,作者的职业起到了关键的作用。“师者,传道授业解惑也。”这是为人师者的根本。教师的任务是为学生解惑,不能故作高深,而必须循循善诱,以深入浅出的方式帮助学生高效率地理解新技术与新知识。这些技能正是成为优秀技术作家的前提。
阅读本书绝对不能浅尝辄止,我的建议是尽可能地吃透它,不要放过任何你认为无法理解,或者不会用到的特性。正如你不应该将.NET简单地看做是一门工具。技术在变化中保持常新,开发人员若要把握变化的脉络,就必须看穿技术的本质,抓住其设计的思想,它才可能是不变的。
我特别喜欢本书讲述多线程与并行计算的内容。前者充分体现了作者在.NET技术领域中达到的技术高度,后者则因为它是.NET 4.0提供的卓越特性而备受关注。窥一斑而知全豹。这也昭示了作者的雄心,他创作本书显然并不仅仅是给读者提供一把钥匙那么简单。芝麻开门,入室登堂,.NET技术的奥秘在本书的揭示下一览无遗。那么,如果不想在.NET这座宝山中空手而归,就从本书开始你的征途吧。
张逸
微软MVP,《软件设计精要与模式》作者
2010年中秋于重庆
推荐序(二)
剪裁得当,深入浅出
今年三月份,电子工业出版社博文视点的卢鸫翔编辑,让我帮忙审阅北京理工大学金旭亮老师的新书——《.NET 4.0面向对象编程漫谈》的部分章节。
当时尽管很忙,还是抽出一些时间,拜读了金老师的书稿。甫一接触,就有一种清新之感。本书笔法之活泼、材料之丰富、裁剪之得当、论述之充分,在本土原创技术书籍中,当属上品。
后来,鸫翔告诉我,金老师为了写作这本书,花了两年时间跟踪.NET 4.0技术,又花了一年时间写作本书的初稿,这足以体现出作者的写作态度是极为认真和对读者负责的。
然而,光有认真的精神未必就会促成大作。本书的与众不同之处在于:用深入浅出的论证方法,将原理讲述与实例阐述深度结合,讲解技术细节时兼顾介绍技术发展史,说明理论基础时不忘辅以编程实践。所以,本书不仅能使初学者得以登.NET技术之平台,窥其堂奥,对于技术上有了一定积累的学习者,也是一本总结前学,继续钻研的合适之选。
金老师虚怀若谷,在本书“田间管理”阶段,我又审阅了部分书稿,很惊讶地发现,我们这些参与审读书稿的人所提的部分修改意见,已经见之于书稿了。这样谦虚自省的作者所写的书,其质量是值得期待的。
值得指出的是,.NET技术只是现今多种技术路线中的一种。我在另一本书的序言中曾经提到,作为技术上想集大成者,只关注一种技术是不够的。在进行一定的技术积累之后,需要跨越技术流派之间的隔阂,贯通不同技术之间的道路。但是,无论如何,选择从.NET环境开始学习编程还是较为合适的。因为.NET环境会为使用者屏蔽掉一些无关紧要的诸如环境配置等细节问题,让人一开始就能够全力关注编程的核心问题。而这一点对于初学者是十分有益的。当然,出于对.NET技术的偏爱,也有很多技术高手一直喜欢在.NET环境下做开发。他们所看重的,也是.NET架构的便捷和高效。
多年来一直十分乐见本土优秀原创技术图书的涌现,它体现了本土技术人员的迅速成长。本土的技术原创书籍也经历了从一味模仿,到寻章摘抄,再到自主创新的发展轨迹。国内外资和中资IT企业的技术中心也积聚了很多能够深刻理解西方信息技术的人才。我们不仅需要自己的技术队伍、技术创新,更需要自主的技术教育体系,而技术书籍的作用也在于此,本书的价值和意义也在于此。
庞引明
2010年中秋于上海