快速业务通道

冒号课堂§2.4:并发范式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
的,但大大提高了用户体验,是软件人性化的表现。再举一例,媒体播放器一般都会提供暂停、快进、倒退、快放、慢放等按钮,如果不采用多线程,它们将形同虚设。此处并发式编程的作用在于提高了软件的响应能力,也改善了用户体验——有谁愿意驾驶一辆启动后不能刹车、不能倒车、不能变速、油尽方停的汽车呢?”

“岂止是不愿意,简直是恐怖!”叹号加重了语气。

“对于操作系统、各种实时系统和诸如数据库、网络服务器等基于服务的系统来说,在响应用户请求的时间上和资源的合理分配上有着极高的要求,并发式编程更是不可或缺。”句号接着补充。

问号随即又问:“并发式编程还有其他用处吗?”

冒号应道:“不同编程范式采用不同的视角和方法来设计和开发软件。并发式编程以进程为导向(Process-Oriented)、以任务为中心将系统模块化。我们都知道,模块化在编程中是个好东西。”

引号心存疑惑:“过程式中引入了函数模块,对象式中引入了对象模块,但并发式似乎没有在语法上引入新型模块,比如C和Java中的线程其实不过是函数或方法的包装而已。”

“我猜你的意思是:在定义一个线程之前,其主函数已经模块化了,不能把功劳记在并发式编程上,对吧?”冒号笑问,“你不能孤立静止地看待每个模块,还要考虑到模块之间的相互关联和作用。相比串行式,并发式在模块之间引入了新的通讯和控制方式。也就是说,原先的一些模块的定义和划分一定是建立在线程机制的基础上的。如果失去线程的支持,它们的合理性自然会打上问号,说不定整体设计都会受到牵连。这也体现了编程范式的渗透性和全局影响力。”

教室上空弥漫的疑云一消而散。

冒号进一步指出:“除了用户主观上的需求和硬件客观上的可能外,并发式显得格外重要的另一深层原因是:许多程序是现实世界的模拟,而我们生活的世界不折不扣是并发式的。从某种意义上看,并发式的模拟比对象式的模拟更贴近世界。”

引号再次提问:“并发式编程在设计上有什么要求?”

“并发式编程以资源共享与竞争为主线——又是对当今世界形势的一个逼真模拟。这意味着程序设计将围绕进程的划分与调度、进程之间的通讯与同步等等来展开。合理的并发式设计需要诸多方面的权衡考量。”冒号说着,放出一段幻灯片——

软件易于重用、维护、测试

公平有效地利用资源,优化程序性能如增大吞吐量、减少响应时间、提高效率等

保障进程安全,防止竞态条件(Race Condition)

保持进程活性,避免死锁、饥饿、活锁、资源枯竭等

减少锁开销、上下文切换等带来的性能损失

妥善处理多进程在算法、调试等方面带来的复杂性

叹号蹙眉:“并发式编程好是好,就是太复杂。”

“天下没有免费的午餐。有所得,必有所失。” 冒号淡淡地说,“并发式编程当然不容易,但也并非难以掌握。最重要的是,作为一个程序员,你不得不面对它。即使你不直接用并发式编程,你依赖的代码和依赖你的代码也可能用到;即使现在没有用并发式,将来也可能用到。如果采取避而不理的鸵鸟政策,早晚会被人点中你的死穴。虽然目前不会对并发式编程作更深入的探讨,但希望能引起你们足够的重视。”

句号谈及他的感受:“相比OOP在语言上得到的支持,并发式的支持力度好像很不够。”

冒号点头称是:“这是由并发式的复杂性和成熟度决定的。另外,在究竟是在语言级别上支持并发、还是交由操作系统处理的问题上,仁者见仁,智者见智。Ada、Java和C#等选择前者,在语法上对并发式编程有一定的支持;C和C++等选择后者,除了关键字volatile外,主要靠库函数支持。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号