赞
踩
前言:
现代OS都将 线程 作为最小调度单位,进程 作为资源分配的最小单位
并发的实质是一个物理CPU(也可以是多个物理CPU)在若干道程序(或线程)之间多路复用
,并发性是对有限物理资源强制行使多用户共享以提高效率
通俗点讲,并发就是只有一个CPU资源,程序(或线程)之间要竞争得到执行机会
。图中的第一阶段,在A执行的过程中B、C不会执行,因为这段时间内这个CPU资源被A竞争到了,同理,第二个阶段只有B在执行,第三个阶段只有C在执行。其实,并发过程中,A、B、C并不是同时在进行的(微观角度),但又是同时进行的(宏观角度)
Parallelism,即并行,指两个或两个以上事件(或线程)在同一时刻发生
,是真正意义上的不同事件或线程在同一时刻,在不同CPU资源上(多核
),同时执行
并行,不存在像并发那样竞争、等待的概念
并发和并行是既相似又有区别的两个概念。并行是指两个或多个事件在同一时刻发生
;而并发是指两个或多个事件在同一时间间隔内发生
。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却能有一道程序执行,故微观上这些程序只能是分时地交替运行
倘若在计算机系统中有多个处理机,则可以将这些并发执行的程序分配到多个处理机上,实现并行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行
至于多线程实现的是并发还是并行?上面所说,所写多线程可能被分配到一个CPU内核中执行,也可能被分配到不同CPU执行,分配过程是操作系统所为,不可人为控制。因此如果有人问我我所写的多线程是并发还是并行的?我会说,都有可能。不管并发还是并行,都提高了程序对CPU资源的利用率,最大限度地利用CPU资源
在多处理器上的程序才可实现并行处理
。从而可知,并行是针对多处理器而言的。并行是同时发生的多个并发事件,具有并发的含义,但并发不一定并行,也就是说并发事件之间不一定要同一时刻发生
临界资源
的现象,就叫作互斥异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回就可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理
异步和同步的区别,在IO等待的时候,同步不会切走,浪费了时间
多线程的好处,比较容易的实现了异步切换的思想,因为异步的程序很难写的。多线程本身还是以同步完成的,但是应该说比效率是比不上异步的。而且多线程很容易写,相对效率也高
多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别
所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的。DMA就是直接内存访问的意思,也就是说,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消耗CPU资源
只要CPU在发起数据传输时发送一个指令,硬件就开始自己和内存交换数据,在传输完成之后硬件会触发一个中断来通知操作完成。这些无需消耗CPU时间的I/O操作正是异步操作的硬件基础。所以即使在DOS这样的单进程(而且无线程概念)系统中也同样可以发起异步的DMA操作
线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入CPU资源来运行和调度
因为异步操作无需额外的线程负担,并且使用回调的方式进行处理,在设计良好的情况下,处理函数可以不必使用共享变量(即使无法完全不用,最起码可以减少共享变量的数量),减少了死锁的可能。当然异步操作也并非完美无瑕。编写异步操作的复杂程度较高,程序主要使用回调方式进行处理,与普通人的思维方式有些初入,而且难以调试
多线程的优点很明显,线程中的处理程序依然是顺序执行 ,符合普通人的思维习惯,所以编写简单。但是多线程的缺点也同样明显,线程的使用(滥用)会给系统带来上下文切换的额外负担。并且线程间的共享变量可能造成死锁的出现
当需要执行I/O操作时(IO密集型),使用异步操作比使用线程+同步I/O操作更适合,I/O操作不仅包括了直接的我呢见、网络的读写,还包括数据库操作、Web Service、HttpRequest 以及 Net Remoting 等跨进程的调用
而进程的使用范围则是那种需要长时间CPU运算的场合(CPU密集型),例如耗时较长的图形处理和算法执行
所以并发编程的目的是充分的利用处理器的每一个核,以达到最高的处理性能
仅多CPU计算机中进程可以并行(单核不行)
单CPU多核中线程可以并行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。