`
hotcharm
  • 浏览: 16898 次
  • 性别: Icon_minigender_1
  • 来自: 义乌
最近访客 更多访客>>
社区版块
存档分类
最新评论

并发的多面性

 
阅读更多

并发解决的问题:速度设计可管理性

更快的执行

并发用于多处理器系统中可以吞吐量,但是并发通常却用来提高单处理器 上的程序性能。如果但处理器没有阻塞 ,那么多线程需要线程上下文的转换,程序性能反而会更差,因此之所以在但处理器中需要多线程,是因为程序控制范围之外的阻塞引起的,如果没有任务阻塞,那么在但处理器上使用并发就没有任何意义。

单处理器上性能提高的常见示例是事件驱动编程。实际上,使用并发的最吸引人的一个优势就是可以产生具有可相应的用户界面。如果没有多线程,那么你的任何一段代码都必须检查界面的元素的状态以作出界面反应。

并发的最直接的方式是操作系统级别使用进程。进程是运行在自己的地址空间内的自包容的程序。多任务操作系统通过进程之间的切换实现同时运行多个进程(程序)。并发的理想示情况是每个任务都作为进程在其自己的地址空间执行,因此任务之间不可能相互干涉。

函数型语言,Erlang等,每个函数调用都不会产生任何副作用(并因此不能干涉其他函数),因此可以作为独立的任务来驱动。函数型语言包含了对针对任务之间彼此通信的安全机制。如果你发现程序中的某一个部分必须大量使用并发,并且你在试图共建这个部分时碰到了过多的问题,那么你可以考虑使用函数型语言来解决这个问题。

java采取了更加传统的方式,线程机制是在顺序型语言的基础上提供了对线程的支持。与在多任务操作系统的分叉外部进程不同,线程机制是在由执行程序表示的单一进程中创建任务。这种方式的好处是操作系统的透明性,这是java的一个重要设计目标。像在单任务操作系统(比如OSX之前的Macintosh操作系统),除非在java中添加多处理器机制,否则任何并发的java程序都无法移植到单任务操作系统,这就打破了“编写一次,到处运行”的要求。

改进代码的设计

并发提供了一种结构上的好处,如果没有并发,某些类型的问题,例如仿真,没有并发是很难解决的。仿真的实例有:计算机游戏或者电影中的生动的动画,这都通常涉及到很多交互式元素,看似每个都有“自己的想法”。

然而仿真往往涉及到非常大的任务,而多线程系统对线程支持的数量往往比较小,而且还可能依赖与平台,或者在java中就是java的版本。解决这个问题的一个典型方法是协作多线程。java的线程机制是抢占式的,这表示调度机制会周期性的终端线程,将上下文切换到另外一个上下文,从而为每一个线程踢狗实践派,使得每一个线程都得到合理的时间去驱动它的任务。在协作式的系统中,每个任务都会自动的放弃控制,这要求程序员要有意识的在每个任务中插入某种让步语句。写作时的系统优势是双重的:上下文的切换通常比抢占式的低廉很多,并且对可以同时执行的线程的数量在理论上没有限制,但是某些协作式系统并未设计为多处理器之间的分布任务,这可能会非常受限。

消息系统设计分布在整个网络中的多台独立的计算机,因此并发就会成为一种非常有用的模型,因为它是实际发生的模型。这种情况下,所有的进程都彼此独立的运行,甚至没有任何可能去共享资源。但是必须同步进程之间的信息。

并发需要代价,包括复杂性代价,但是这些代价相对于程序设计、资源负载均衡以及用户方便使用方面的改进相比,就显得微不足道了。通常,线程使你能够创建更加松散耦合的设计,否则,你的代码中的各个部分都必须显式的关注那些通常可以由线程来处理的任务。

分享到:
评论

相关推荐

    Thinking in Java知识点总结

    1. **并发的多面性**:并发可以提升程序性能,特别是对于单处理器系统,通过并发可以防止一个任务阻塞导致整个程序停滞。此外,并发也能改善代码设计,使得程序更易于管理和扩展。 2. **基本的线程机制**:Java中的...

    存储器器件及其异步多面独立读取操作的制作方法.docx

    综上所述,本文提出的存储器器件及其异步多面独立读取操作的制作方法,通过创新的硬件结构和控制机制,实现了存储器读取操作的高效并发,对提高存储系统的整体性能具有深远影响。这一技术的应用将推动存储领域的发展...

    计算机《操作系统》复习提纲1

    系统安全性包括物理安全、逻辑安全和安全管理,其中逻辑安全涵盖保密性、完整性和可用性,这些安全性质具有多面性、动态性、层次性和适度性。 综上所述,操作系统是计算机系统的核心,它通过管理资源和提供用户接口...

    变应性鼻炎的再认识和进展PPT课件.pptx

    总之,变应性鼻炎是一种多面性的疾病,涉及到多种病理生理过程,并与其他呼吸系统疾病密切相关。了解其病因、病理机制和治疗方法对于改善患者生活质量、预防并发症具有重要意义。治疗策略应综合考虑个体差异,采取...

    云计算环境下浮点和整数同时多线程资源配置方法研究.pdf

    综上所述,云计算环境下的资源配置方法研究是一个多面的课题,需要综合考虑计算性能、访存效率、能耗控制以及资源分配的合理性。通过了解和应用这些知识点,我们可以更好地设计和优化云计算资源的配置策略,提高...

    自身免疫病合并神经病变.ppt

    SLE是一种典型的自身免疫性疾病,其神经精神狼疮(NPSLE)是其中一种严重的并发症,影响约50%至60%的患者,可能在疾病初期或病程一年内出现。神经精神狼疮的发病与SLE的活动性密切相关,尤其是当患者具有抗磷脂抗体...

    5G落地:应用融合与创新(中国移动).pdf

    通过这些知识点,我们可以看到5G技术的多面性和复杂性,以及它在各行各业中应用融合与创新的潜力。5G不仅仅是通信技术的升级,更是一种推动社会数字化转型的重要力量,它能深刻改变生产、生活方式,带来全新的商业...

    NodeJs入门

    Node.js入门一书中强调了JavaScript的多面性,它不仅仅是一种客户端脚本语言,也已经成为了一种服务端编程语言。书中指出,Node.js应用开发不仅仅涉及传统的前端技术,还要求开发者具备对JavaScript语言的深入理解,...

    [医学类考试密押题库与答案解析]医疗卫生系统招聘考试医学基础知识模拟15.docx

    1. **肝硬化的并发症**:肝硬化最常见的并发症是上消化道出血,而非肝性脑病,后者虽然也是严重的并发症,但不是最常见的。肝性脑病通常是肝硬化病人死亡的主要原因。 2. **消化性溃疡的病理结构**:消化性溃疡的...

    Programming in Scala 第二版(2011年新版)

    8. 特质(Trait):Scala的特质是实现行为组合的关键,它可以被用来定义接口、添加方法或者实现代码,是实现多面性、组合设计模式的重要工具。 9. 异常处理:Scala的异常处理与Java类似,但更加强调表达性和简洁性...

    70个python项目.zip

    1. **项目多样性**:这70个项目涵盖了数据分析、Web开发、自动化脚本、网络爬虫、机器学习等多个领域,反映出Python语言的多面性。通过这些项目,我们可以了解到Python在各个领域的应用,并掌握不同场景下的编程技巧...

    数码时代,一个IT行业网站,可改成其他行业网站

    C#的强大在于它的多面性,可以用于开发桌面应用、Web应用、移动应用甚至是游戏。在“数码时代”网站上,我们可以找到关于C#的详尽教程,从基础语法到高级特性的讲解,帮助开发者快速掌握这一语言。同时,C#与.NET...

    CLIPS_UserGuide.pdf

    10. **Fascinating Facets**:CLIPS的多面性意味着它可以应用于多个领域。这部分可能涵盖了CLIPS在不同应用场景下的特性和用法。 11. **Handling Handlers**:处理程序(或事件处理器)在CLIPS中用于响应特定事件,...

    This is only a test.

    在IT行业中,测试是软件开发...总的来说,Web测试是一个复杂且多面的过程,涵盖了从基础功能验证到高级性能和安全性的多个层面。有效的Web测试能提升用户体验,降低维护成本,确保Web应用程序的成功上线和稳定运行。

    软件工程课件 12分布式系统构架.pptx

    并发性,通过并行处理提升性能;缩放性,能通过添加新资源扩展能力;以及容错性,即使在部分故障情况下仍能保持运行。 然而,分布式系统也存在一些挑战,如复杂性,比集中式系统更难设计和维护;保密性,更容易受到...

    基于Java语言的安卓手机软件开发教学研究.pdf

    - **多面灵活性**:Java语言采用面向对象的编程思想,允许开发者将复杂的程序划分为独立的模块,便于理解和维护。每个模块在保持技术独立的同时,通过相互协作完成编程任务,提高了软件的可修改性和适应性。 - **...

    技术TL核心职责7.16.pdf

    10. **分布式系统与组件**:熟悉并应用分布式基础组件,如缓存、限流、分布式锁和幂等性设计,以支持高并发和高可用的系统。 综上所述,技术TL的角色是多面的,既要有深厚的技术底蕴,又要有出色的团队管理能力,以...

    口腔执业医师考试病例分析资料报告整理.pdf

    诊断依据是短时间内多个牙齿多面的深龋损。治疗策略是迅速去除腐质并进行暂时性填充,待病情稳定后再进行永久修复。治疗时扩大洞缘至自洁区,同时要治疗全身疾病并改善口腔卫生。 5. 急性牙髓炎的诊断与治疗: 急性...

Global site tag (gtag.js) - Google Analytics