并发编程:已成必要

转载 2007年09月15日 15:58:00

什么是并发机制
   处理器同时处理二个或者二个以上的任务,即为并发机制。

  单核时代,并发仅是操作系统给我们的一个假象。I/O操作速度远远慢于CPU处理速度(键鼠输入、硬盘读写、网络传输等速度远慢于内存读写速度,而内存速度又远慢于CPU缓存速度……), 所以有效的利用I/O操作间隙时的CPU,成为并发机制的来由。早期并发由粗粒度的进程调度来实现,即将等待I/O操作结果的进程挂起,让下一个等待CPU处理的进程进入并运行,如此尽可能提高CPU的使用利用率。调度花销更小的线程技术出现后,并发编程即指多线程编程了。

   现在,已经进入多核时代,也就是真正的并发机制时代。

可笑的现象
   摩尔定律:1965年,摩尔指出芯片中的晶体管和电阻器的数量每年会翻番,原因是工程师可以不断缩小晶体管的体积。这就意味着,半导体的性能与容量将以指数级增长,并且这种增长趋势将继续延续下去。1975年,摩尔又修正了摩尔定律,他认为,每隔24个月,晶体管的数量将翻番。 

 该定律,过去一直都有效地预言着。处理器以及其它硬件设备的性能都在大幅度地提高!

   然而,软件性能的发展却没有跟上这节奏,仅只在产品推出速度上提高着。软件生产者乐观地幻想着:硬件性能这么高,提升速度这么快。根本没有必要去担心软件的性能。所以一些所谓的程序员不需要理解算法为何物、不曾有优化的概念!他们遵循地是,符合用户需求的软件,能快速推出就行!

   当然,目前来说,这样认为是无可厚非的!因为,高性能的硬件系统给予了足够地包涵。

警钟,摩尔定律终结
   04年,狂热追求处理器主频的Intel宣布取消4G处理器的研制计划,转投多核处理器。这一举动就意味着单核处理器的摩尔定律已经到达终点。虽然许多技术人员不认同,但现实却不容改变。

   现在,多核技术已经成为Intel与AMD硝烟弥漫的战场。这也表明,两者都在单核技术上已无计可施。

   对于软件工作者来说,仍然肆意挥霍硬件资源,或者不改变自己程序的运行方式,则会面临被PC淘汰的可能。因为多核时代的硬件系统,工作方式已经完全改变!

并发编程,已成必要
   现在,不研究多线程是如何提高性能,而只提充分利用硬件资源这一点。

   完成某任务,一个支持多线程运算,一个仅是单线程运算,用户肯定毫不犹豫地选择前者。因为,厂商选择多核来提高处理器的性能,而用户升级同样只能选择多核处理器。

   如果想让自己的软件产品被PC接受,那么你目前照样可以不需知道算法为何物、不需去优化代码,但必须知道并发是怎么回事,知道怎样让软件产品充分的利用多核的硬件系统。

【Linux基础】为什么要学shell

作为Linux操作系统的来源,UNIX是许多伟大构想和操作系统哲学的源泉,它提供了多种不同的shell程序。在UNIX商业版本中最常见的可能是Korm shell,但还没有许多其它的shell。那为什...
  • u010926630
  • u010926630
  • 2013年06月09日 11:57
  • 1158

关于Java并发编程的总结和思考

编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的,但是当我们对并发编程有了更深刻的认识和更多的实践后,实现并发编程就有了更多的方案和更...
  • jackfrued
  • jackfrued
  • 2015年03月27日 10:36
  • 92733

C#并发编程(一)

C#并发编程(一) 单线程处理、多线程处理、并行处理、异步处理
  • xiaoxionglove
  • xiaoxionglove
  • 2017年02月19日 23:01
  • 764

《Java并发编程实战》读书笔记

Subsections  线程安全(Thread safety) 锁(lock) 共享对象 对象组合 基础构建模块 任务执行 取消和关闭 线程池的使用 性能与可伸缩性 并发程序的测试 显示锁 原子变量...
  • cdl2008sky
  • cdl2008sky
  • 2014年05月20日 17:02
  • 24547

Java并发编程(Concurrency)并发模型

摘要:这是翻译自一个大概30个小节的关于Java并发编程的入门级教程,原作者Jakob Jenkov,译者Zhenning Lang,转载请注明出处,thanks and have a good ti...
  • wang_shuyu
  • wang_shuyu
  • 2016年11月24日 12:59
  • 677

C++并发编程(C++11)

C++11有了std::thread 以后,可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大的提高。 C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是,,,...
  • phiall
  • phiall
  • 2016年08月31日 14:57
  • 3467

《JAVA并发编程实践》读书笔记(一)

《JAVA并发编程实践》读书笔记(一)2016年8月1日,“妮妲”冲击广东,全市放假1天。托“妮妲”的福,终于有空将近期的阅读整理一下。 最近利用业余时间重读了Brian Goetz的书,觉得受益匪...
  • youngweiquan
  • youngweiquan
  • 2016年08月02日 01:04
  • 617

Go语言并发编程(一)

Go语言的特色不得不提的就是并发机制,在C语言中编写非常繁琐复杂的并发程序在Go语言中可以非常便捷。Go中并发程序主要通过goroutine和channel来实现。这篇文章我主要是解释一下的是“并发”...
  • swallowing_
  • swallowing_
  • 2015年08月27日 15:12
  • 1289

《java并发编程实战》读书笔记——并发应用

1.使用线程池 当应用需要处理多个任务时,例如一个Web服务器处理它接收到的请求,可以使用线程池。 通过重用现有的线程而不是创建新的线程,可以在处理多个请求时分摊在线程创建和销毁过程中产生的巨大开销。...
  • Great_Smile
  • Great_Smile
  • 2016年01月06日 22:11
  • 986

高性能网络编程5--IO复用与并发编程

开发基于TCP协议的高性能服务器时,能够处理的并发连接数是一个重要指标。为了实现高并发,前辈们在开发效率与执行效率上的不同权衡下,提供了多种实现方式。IO多路复用,这是最纯正、本质的方法,它也是追求执...
  • russell_tao
  • russell_tao
  • 2013年12月04日 15:57
  • 23676
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:并发编程:已成必要
举报原因:
原因补充:

(最多只允许输入30个字)