6.并发与并行

● 并发与并行视频教程

● 并发

● 并行执行

● 并行并发执行

● 并行

● 并发和并行组合

    ○ 并发、非并行

    ○ 并行、非并发

    ○ 既非并发也非并行

    ○ 既是并发也是并行


术语“并发”和“并行”通常与多线程程序有关。 最开始的时候,几乎可以认为并发和并行是指的相同的概念。 但是,并发和并行实际上具有不同的含义。 在此并发与并行教程中,我将解释这些概念的含义。

为了清楚起见,在本文中,我着眼于单个应用程序-单个进程中的并发和并行。 不讨论多个应用程序、进程或计算机之间的并发和并行。

并发与并行视频教程

如果你喜欢视频,请在此处查看本教程的视频版本:并发与并行性教程视频(原链接到油管,如果大家有需要可留言)

并发与并行视频教程

并发

并发意味着应用程序正在同时完成一项以上的任务,或者至少在表面上似乎是在同一时间(并发)上完成一项以上的任务。

如果计算机只有一个CPU,则应用程序可能无法在同一时间同时完成一项以上的任务,而需要在应用程序中处理一次执行一项以上的任务。 为了同时完成多个任务,CPU在执行过程中会在不同任务之间切换。 如下图所示:

并发

并行执行

并行执行是指计算机具有一个以上的CPU或CPU内核,并且同时在多个任务上进行处理。 但是,并行执行与并行是有区别的, 稍后我将回到并行这一主题中去。 并行执行如下图所示:

并行执行

并行并发执行

可能有并行并发执行,其中线程分布在多个CPU之间。 因此,在同一CPU上执行的线程是同时执行的,而在不同CPU上执行的线程是并行执行的。 下图说明了并行并发执行。

并行并发执行

并行

术语并行是指应用程序将其任务分解为较小的子任务,这些子任务可以并行处理,例如在多个CPU上同时进行。 因此,并行与并行并发执行所引用的执行模型不同,即使它们在表面上看起来相似。

为了实现真正的并行,你的应用程序必须运行多个线程-每个线程必须在单独的CPU / CPU内核/图形卡GPU内核或类似内核上运行。

下图说明了一个较大的任务,该任务被分为4个子任务。 这4个子任务由4个不同的线程执行,这些线程在2个不同的CPU上运行。 这意味着,这些子任务的部分同时执行(在同一CPU上执行),而部分并行执行(在不同的CPU上执行)。

并行性

相反,如果4个子任务是由在每个CPU上运行的4个线程(总共4个CPU)执行的,则该任务的执行将是完全并行的。 但是,将一个任务分解成与可用CPU数量一样多的子任务并不总是那么容易。 通常,将一个任务分解为与当前任务自然匹配的多个子任务,然后让线程调度程序负责在可用CPU之间分配线程是比较容易的。

并发和并行组合

概括地说,并发是指单个CPU如何看似同时(又称AKA)在多个任务上取得进展。

另一方面,并行性与应用程序如何并行执行单个任务有关-通常通过将任务拆分为可以并行完成的子任务来实现。

这两种执行样式可以在同一应用程序中组合。 我将在下面介绍其中的一些组合。

并发、非并行

一个应用程序可以是并发的,但不能是并行的。 这意味着它似乎同时(同时)在一个以上的任务上取得了进展,但是应用程序在每个任务的取得进展之间切换-直到任务完成为止。 没有真正并行执行在并行线程/ CPU中执行的任务。

并行、非并发

一个应用程序也可以是并行的,但不能是并发的。 这意味着该应用程序一次只能处理一个任务,并且该任务被分解为可以并行处理的子任务。 但是,每个任务(+子任务)在拆分下一个任务并并行执行之前已完成。

既非并发也非并行

另外,一个应用程序既不能是并发的,也不能是并行的。 这意味着它一次只能处理一个任务,并且该任务永远不会分解为子任务以并行执行。 对于小型命令行应用程序可能是这种情况,其中只有一个作业太小而无法并行化。

既是并发也是并行

最后,应用程序还可以通过两种方式同时并发和并行:

第一种方式是简单的并行并发执行。 如果应用程序启动了多个线程,然后在多个CPU上执行,则会发生这种情况。

第二种方式是应用程序既可以同时处理多个任务,又可以将每个任务分解为多个子任务以并行执行。 但是,在这种情况下,并发性和并行性的某些好处可能会丢失,因为计算机中的CPU已经足够合理地仅使用并发性或并行性。 结合使用它可能只会导致很小的性能提升,甚至会导致性能下降。 在盲目采用并发并行模型之前,请确保进行分析和衡量。


译自:Concurrency vs. Parallelism

Jakob Jenkov

Last update: 2020-11-17

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容