并行于并发区别

转载 2012年03月30日 21:29:21

一:并行与并发:
1.“并行”是指无论从微观还是宏观,二者都是一起执行的,就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。
2.而“并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行,这就好像两个人用同一把铁锨,轮流挖坑,一小时后,两个人各挖一个小一点的坑,要想挖两个大一点得坑,一定会用两个小时。
3.从以上本质不难看出,“并发”执行,在多个进程存在资源冲突时,并没有从根本提高执行效率。

1.posix中,并发的定义要求:延迟调用线程的函数不应该导致其它线程的无限期延迟;
2.并发操作之间科能相互交替,导致程序相互独立的运行(一个程序不必等到另一个程序结束后运行),但是并发并不意味着操作同时执行。
3.并行的补充含义是指事情在相同的方向上同时进行(没有交错)。真正的并行只能在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在。
并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作轮流执行)。


1.在多处理器系统中,线程模式可以让一个进程同时执行多个独立的运算。一个运行在双CPU上的计算密集型多线程程序几乎可以获得传统的
单线程程序两倍的性能。“几乎两倍”是基于以下的事实:创建额外的线程和执行线程间的同步会带来额外的开销。这种效果通常称为“可扩展性“。
2.“可扩展性“总是随着CPU数量的增加而下降,因为可能会有更多的锁操作和内存冲突。
3.多处理器系统中的硬件必须提供同步访问内存的机制。当每个处理器有自己的数据高速缓存时,其中的数据必须与其它处理器缓存的数据以及内存中的数据保持一致。

1.线程编程模式允许程序在等待如I/O之类的阻塞操作的时候继续其它计算。这对网络服务器和客户端是有用的,也是C/S系统使用线程的主要原因。
当一个线程在等待费时的网络I/O操作的时候,该线程被阻塞,而其它线程还可以独立的运行。某些系统支持异步I/O操作,可以具有类似的好处,但
大部分UNIX类系统不提供异步I/O操作,而且异步操作通常比线程更复杂。
注:UNIX系统支持“非阻塞式I/O“:允许程序推迟I/O操作,知道它能够不被中断的完成该操作。而异步I/O:能在程序执行其它操作的同时继续I/O。

二:多线程编程模型的优点:
1.在多处理器系统中提高开发程序的并行性。除并行性这一优点需要特殊硬件支持外(多CPU),其它优点对硬件不作要求。
2.在等待慢速外设I/O操作结束的同时,程序可以执行其它计算,为程序的并发提供更有效,更自然的开发方式。
3.一种模块化编程模型,能够清晰的表达程序中独立事件间的相互关系。

并发和并行的区别

并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。     在操作系统中,并发是指一个时间...
  • coolmeme
  • coolmeme
  • 2013年08月16日 12:54
  • 66812

并发与并行的区别

学习多线程的时候会遇到一个名词:并发。这是属于操作系统中的词汇,需要了解并发和并行的区别,从网上搜集了几种说法帮助理解。 一: 并发是指一个处理器同时处理多个任务。 并行是指多个处理器或者是多核...
  • java_zero2one
  • java_zero2one
  • 2016年05月22日 23:17
  • 5417

并发与并行的区别

""" https://github.com/forhappy/Cplusplus-Concurrency-In-Practice/blob/master/zh/chapter1-Introdu...
  • danny_amos
  • danny_amos
  • 2016年02月12日 01:32
  • 963

并发与并行的区别

3、操作符 3.1 略 3.2 使用java操作符 Java操作符 + - * / ,这些基本操作符作用于操作数,生成一个新值。几乎所有的操作符都只能操作基本类型,例外的操作符是= 、== 和!...
  • lyt_7cs1dn9
  • lyt_7cs1dn9
  • 2016年12月05日 17:56
  • 1572

通俗理解并发和并行的区别

所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的...
  • yuxin6866
  • yuxin6866
  • 2016年09月02日 13:21
  • 642

并发并行同步异步多线程的区别

同步和异步的概念: 同步:同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去 异步:异步是指进程不需要一直等下去...
  • bryant_liu24
  • bryant_liu24
  • 2017年02月17日 18:00
  • 3020

Java虚拟机垃圾收集器分析 并行和并发

Java虚拟机垃圾收集器分析 1 、活动对象 l  追踪 root 对象算法: 深度追踪 root 对象,将 heap 中所有被引用到的 root 做标志,所有未被标志的对象视为非活动对象...
  • lantian0802
  • lantian0802
  • 2014年09月12日 10:18
  • 2264

并发和并行,异步与多线程区别

1、并发和并行的区别 可由上图形象指出两者的区别: 1)定义: 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上...
  • woliuyunyicai
  • woliuyunyicai
  • 2015年04月21日 09:01
  • 2427

多线程相关的一些基础概念:同步、异步、并发、并行

多线程相关的一些基础概念整理。包括:并发,并行,同步,异步,线程,进程...
  • Ray_L_IOS
  • Ray_L_IOS
  • 2016年01月19日 12:26
  • 814

并行(parallel)和并发(concurrency)的区别和联系

不同: 并行(parallel)是指同一时刻,两个或两个以上时间同时发生。 并发(parallel)是指同一时间间隔(同一段时间),两个或两个以上时间同时发生。 联系: 宏观上来说并行...
  • u013945548
  • u013945548
  • 2016年03月26日 20:06
  • 445
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:并行于并发区别
举报原因:
原因补充:

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