精华内容
下载资源
问答
  • 并发与并行的区别是什么
    2021-03-04 04:03:41

    详细请参考:Concurrency vs. Parallelism​tutorials.jenkov.com0ba30921e062ae8d8e646094ac2c4e41.png

    【Concurrency】

    并发的反义词是顺序,concurrency vs sequential,例如:

    顺序处理:

    你陪女朋友先看电影(Task1),看完后陪女朋友到花店买了一束花(Task2),然后陪女朋友去西餐厅吃烛光晚餐(Task3),这就是“顺序处理”,因为整个过程中只有你这一个处理器,事情只能一件一件的做(要么是你亲自做,要么你要等别人做)。Task1你要花2小时,Task2等花做好你要花30分钟,Task3等菜做好要30分钟,从你开始看电影到开始吃饭,全程需要3小时(假设走路不算时间)。

    并发处理:

    你陪女朋友先看电影(Task1),同时打电话给花店预定一束花,花店安排人员在20:00送到西餐厅(Task2);同时你打电话给西餐定预定20:00的浪漫烛光晚餐,西餐厅开始给你准备晚餐(Task3);等到你电影看完跑到西餐厅,花也送到了,晚餐也准备好了,你跑过去直接献花吃饭然后开房即可,这就是并发处理。Task1还是2小时,但Task2和Task3也在这2小时完成了,从你开始看电影到开始吃饭,全程只需要2小时,3个任务是并发完成的。秘诀就是有3个处理器了:你、花店、餐厅在同一个时间段内都在做各自的任务。

    【Parallelism】

    并行的反义词是串行,Parallelism vs Serial,比如说给你一个100万的整形数组,挑出其中最小的值。

    串行处理

    从数组的第一个开始扫描到最后一个,类似冒泡排序一样

    并行处理

    将数组分为10组,每组10万个整形,同时扫描10组得到10个数值,然后再将这10个数值排列一下。

    上面这个简单的例子也可以看出,串行改为并行其实并不那么简单,涉及到任务分解(有先后依赖的任务就不能做到并行)、任务运行(可能要考虑互斥、锁、共享等)、结果合并。

    以Java的并行垃圾回收器Parallel为例,标记阶段、回收阶段各自可以多线程并行,但不能将回收阶段和标记阶段一起并行,因为回收阶段的处理依赖标记阶段的结果。

    ==========2019.01.17============

    两个词很好的说明了并发和并行的区别:

    Parallel Computing:并行计算

    Concurrent programming:并发编程

    更多相关内容
  • 并发与并行

    2021-01-20 11:50:02
    并发与并行在操作系统中的定义 1.并发 百度百科 并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上...
  • 并发并行区别(图解)

    千次阅读 2022-04-18 18:01:02
    在学习多线程/进程编程时,我们经常会遇到并发并行这两个名词,它们看起来是一个概念,都是“多个线程/进程同时执行”的意思,但实际上它们是有区别的,甚至说不是一码事。 很多教材也都解释了并发并行区别,...

    在学习多线程/进程编程时,我们经常会遇到并发和并行这两个名词,它们看起来是一个概念,都是“多个线程/进程同时执行”的意思,但实际上它们是有区别的,甚至说不是一码事。

    很多教材也都解释了并发和并行的区别,例如:

    • 并行是指两个或者多个事件在同一时刻发生,而并发是指两个或多个事件在同一时间间隔发生。
    • 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

    不过这种解释非常晦涩难懂,估计只有作者自己才能搞明白。这篇文章,我将站在一个大龄程序员的视角,使用通俗易懂的语言来重新剖析并发和并行的区别,并配上优雅的图片,以加深读者的理解。

    并发(Concurrency)

    早期计算机的 CPU 都是单核的,一个 CPU 在同一时间只能执行一个进程/线程,当系统中有多个进程/线程等待执行时,CPU 只能执行完一个再执行下一个。

    为了表述简单,下文我们将不再区分进程和线程,而将它们统一称为“任务”。在不同的场景下,一个任务可能是进程,也可能是线程。

    计算机在运行过程中,有很多指令会涉及 I/O 操作,而 I/O 操作又是相当耗时的,速度远远低于 CPU,这导致 CPU 经常处于空闲状态,只能等待 I/O 操作完成后才能继续执行后面的指令。

    为了提高 CPU 利用率,减少等待时间,人们提出了一种 CPU 并发工作的理论。

    所谓并发,就是通过一种算法将 CPU 资源合理地分配给多个任务,当一个任务执行 I/O 操作时,CPU 可以转而执行其它的任务,等到 I/O 操作完成以后,或者新的任务遇到 I/O 操作时,CPU 再回到原来的任务继续执行。

    下图展示了两个任务并发执行的过程:
    在这里插入图片描述

    图1:单核 CPU 执行两个任务

    虽然 CPU 在同一时刻只能执行一个任务,但是通过将 CPU 的使用权在恰当的时机分配给不同的任务,使得多个任务在视觉上看起来是一起执行的。CPU 的执行速度极快,多任务切换的时间也极短,用户根本感受不到,所以并发执行看起来才跟真的一样。

    操作系统负责将有限的 CPU 资源分配给不同的任务,但是不同操作系统的分配方式不太一样,常见的有:

    • 当检测到正在执行的任务进行 I/O 操作时,就将 CPU 资源分配给其它任务。
    • 将 CPU 时间平均分配给各个任务,每个任务都可以获得 CPU 的使用权。 在给定的时间内,即使任务没有执行完成,也要将 CPU 资源分配给其它任务,该任务需要等待下次分配 CPU 使用权后再继续执行。

    将 CPU 资源合理地分配给多个任务共同使用,有效避免了 CPU 被某个任务长期霸占的问题,极大地提升了 CPU 资源利用率。

    并行(Parallelism)

    并发是针对单核 CPU 提出的,而并行则是针对多核 CPU 提出的。和单核 CPU 不同,多核 CPU 真正实现了“同时执行多个任务”。

    多核 CPU 内部集成了多个计算核心(Core),每个核心相当于一个简单的 CPU,如果不计较细节,你可以认为给计算机安装了多个独立的 CPU。

    多核 CPU 的每个核心都可以独立地执行一个任务,而且多个核心之间不会相互干扰。在不同核心上执行的多个任务,是真正地同时运行,这种状态就叫做并行。

    例如,同样是执行两个任务,双核 CPU 的工作状态如下图所示:
    在这里插入图片描述

    图2:双核 CPU 执行两个任务

    双核 CPU 执行两个任务时,每个核心各自执行一个任务,和单核 CPU 在两个任务之间不断切换相比,它的执行效率更高。

    并发+并行

    在图2中,执行任务的数量恰好等于 CPU 核心的数量,是一种理想状态。但是在实际场景中,处于运行状态的任务是非常多的,尤其是电脑和手机,开机就几十个任务,而 CPU 往往只有 4 核、8 核或者 16 核,远低于任务的数量,这个时候就会同时存在并发和并行两种情况:所有核心都要并行工作,并且每个核心还要并发工作。

    例如一个双核 CPU 要执行四个任务,它的工作状态如下图所示:

    在这里插入图片描述

    每个核心并发执行两个任务,两个核心并行的话就能执行四个任务。当然也可以一个核心执行一个任务,另一个核心并发执行三个任务,这跟操作系统的分配方式,以及每个任务的工作状态有关系。

    总结

    并发针对单核 CPU 而言,它指的是 CPU 交替执行不同任务的能力;并行针对多核 CPU 而言,它指的是多个核心同时执行多个任务的能力。

    单核 CPU 只能并发,无法并行;换句话说,并行只可能发生在多核 CPU 中。

    在多核 CPU 中,并发和并行一般都会同时存在,它们都是提高 CPU 处理任务能力的重要手段。

    展开全文
  • 并发与并行区别

    2022-04-05 22:07:34
    并发与并行区别


    解释一:

    并行:指两个或者多个事件在同一个时刻发生;

    并发:指两个或者多个事件在同一时间间隔发生

    解释二:

    并行:是在不同实体上的多个事件;

    并发:是在同一实体上的多个事件。

    解释三:

    并行:在多台处理器上同时处理多个任务;

    并发:在一台处理器上“同时”处理多个任务。

    区别:

    1. 并行是同时进行,并发是交替进行;
    2. 并行是物理上的同时发生,并发是逻辑上的同时发生。

    并行:

    并发:

     

     总结:

    1. 并发针对单核CPU,无法并行;
    2. 并行针对多核CPU,并发和并行都可能发生;
    3. 都是提高 CPU 处理任务能力的重要手段。

    新人创作,如有问题请大佬指出。如有帮助请点个赞吧。

    展开全文
  • 与并发区别什么并行:指两个或两个以上事件或活动在同一时刻发生。如多个任务在多个 CPU 或 CPU 的多个核上同时执行,不存在 CPU 资源的竞争、等待行为。 并行与并发区别 1、并行指多个事件在同一...

    并行是什么意思?与并发的区别是什么?

    并行:指两个或两个以上事件或活动在同一时刻发生。如多个任务在多个 CPU 或 CPU 的多个核上同时执行,不存在 CPU 资源的竞争、等待行为。

     

    并行与并发的区别

    1、并行指多个事件在同一个时刻发生;并发指在某时刻只有一个事件在发生,某个时间段内由于 CPU 交替执行,可以发生多个事件。

    2、并行没有对 CPU 资源的抢占;并发执行的线程需要对 CPU 资源进行抢占。

    3、并行执行的线程之间不存在切换;并发操作系统会根据任务调度系统给线程分配线程的 CPU 执行时间,线程的执行会进行切换。

     

    Java 中的多线程

    通过 JDK 中的 java.lang.Thread 可以实现多线程。

    Java 中多线程运行的程序可能是并发也可能是并行,取决于操作系统对线程的调度和计算机硬件资源( CPU 的个数和 CPU 的核数)。

    CPU 资源比较充足时,多线程被分配到不同的 CPU 资源上,即并行;CPU 资源比较紧缺时,多线程可能被分配到同个 CPU 的某个核上去执行,即并发。

    不管多线程是并行还是并发,都是为了提高程序的性能。

     


    【Java面试题与答案】整理推荐

     

    展开全文
  • 但在这当中,发现一些概念区分起来很难,比如并发并行,同步和异步,阻塞和非阻塞,但是这些概念却很重要。因此在此把它总结下来。并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间...
  • 前言 在网上看到说并发是多个任务交替使用CPU,同一时刻还是只有一个...并发与并行区别是什么? 什么是串行? 什么是并发什么是并行? 三者的区别是什么? 文章目录 前言 串行(serial) 并发(Conc...
  • Erlang之父Joe Armstrong用一张5岁小孩都能看懂的图解释了并发与并行区别 所谓"同时"进行 我们现在使用的windows操作系统,是可以"同时"做很多件事儿的。比如我们可以一边看电影,一边聊QQ;一边听歌,一边打游戏...
  • 网上有个例子挺形象的:你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。你吃饭吃到...
  • 并发与并行区别

    2018-11-29 17:55:09
    并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个...并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不...
  • 并发并行区别

    2022-05-08 10:51:52
    首先我们要知道什么是并发什么是并行并发并行最开始都是操作系统中的概念,表示的是CPU执行多个任务的方式,这两个概念极容易混淆。 首先说说我们最常使用的Windows操作系统:所谓"同时"进行: 用我们平民...
  • 并发并发(Concurrent),在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。 并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几...
  • 多线程_并发与并行

    2022-08-08 20:00:55
    倘若在计算机系统中有多个处理机,则这些可以并发执行的程序可被分配到多个处理机上,实现并行执行,即利用多个处理机来处理一个可并发执行的程序,如此,多个线程可实现真正意义上的同时执行。当存在多个线程时,若...
  • 并发不是并行,它更好!.现代社会是并行的:多核、网络、云计算、用户负载,并发技术对此有用。Go语言支持并发,它提供了:并发执行(goroutines),同步和消息(channels)和多路并发控制(select)。  现代社会是并行的...
  • 并发与并行 并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU...
  • JS中 并发(concurrency)和并行(parallelism)区别 1.并发:宏观概念,有两个任务A和B,在一段时间内,通过在A和B两个任务间切换,来完成两个任务,这种情况较并发 2.并行:微观概念,假设CPU有两个核心,那么我们...
  • 并行并发区别与联系

    千次阅读 2022-04-23 20:43:26
    在学习多线程/进程编程时,我们经常会遇到并发并行这两个名词,它们看起来是一个概念,都是“多个线程/进程同时执行”的意思,但实际上它们是有区别的,甚至说不是一码事。 很多教材也都解释了并发并行区别,...
  • 并发并行性有什么区别?示例被赞赏。#1楼并发性:具有共享资源潜力的多个执行流例如:两个线程争用一个I / O端口。平行主义:将问题分成多个相似的块。例如:通过在文件的每半部分上运行两个进程来解析大文件。#2...
  • 面试必考的:并发并行什么区别

    千次阅读 多人点赞 2019-04-30 10:02:55
    本文公众号来源:漫话编程 作者:漫话编程并发并行不知道你们在面试的时候有没有被问过,反正我之前是被问过的。在学习多线程的时候我也曾经解释过并行并发区别:入门Java...
  • 什么是并发并行
  • Java并发与并行

    2021-01-27 08:04:48
    并发是指同时执行多项操作的能力。 早在早期,计算机一次只能执行一个程序。但是现在,现代计算机能够同时运行很多任务。例如 - 您可以同时在网络浏览器上浏览我的博客,并在媒体播放器上听音乐。 您可以...
  • 操作系统的基本概念(并发与并行区别)
  • Java 并行并发什么区别并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 在一台处理器上“同时”处理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 282,201
精华内容 112,880
热门标签
关键字:

并发与并行的区别是什么