美文网首页
并发和并行的区别

并发和并行的区别

作者: 风亡小窝 | 来源:发表于2019-07-23 01:00 被阅读0次

关于并发和并行的区别,引用一个经典的描述:

并发是同一时间应对(dealing with)多件事情的能力。 并行是同一时间动手(doing)做多件事情的能力。

雨痕老师《Go 语言学习笔记》上的解释:

并发是指逻辑上具备同时处理多个任务的能力;并行则是物理上同时执行多个任务。

而根据《Concurrency in Go》这本书,计算机的概念都是抽象的结果,并发和并行也不例外。它这样描述并发和并行的区别:

Concurrency is a property of the code; parallelism is a property of the running program.

并发是代码的特性,并行是正在运行的程序的特性。先忽略我拙劣的翻译。很新奇,不是吗?我也是第一次见到这样的说法,细想一下,还是很有道理的。

我们一直说写的代码是并发的或者是并行的,但是我们能提供什么保证吗?如果在只有一个核的机器上跑并行的代码,它还能并行吗?你就是再天才,也无法写出并行的程序。充其量也就是代码上看起来“并发”的,如此而已。

当然,表面上看起来还是并行的,但那不过 CPU 的障眼法,多个线程在分时共享 CPU 的资源,在一个粗糙的时间隔里看起来就是“并行”。

所以,我们实际上只能编写“并发”的代码,而不能编写“并行”的代码,而且只是希望并发的代码能够并行地执行。并发的代码能否并行,取决于抽象的层级:代码里的并发原语、runtime,操作系统(虚拟机、容器)。层级越来越底层,要求也越来越高。因此,我们谈并发或并行实际上要指定上下文,也就是抽象的层级。


https://zhuanlan.zhihu.com/p/74613114

相关文章

  • JS异步编程相关知识点

    并发(concurrency)和并行(parallelism)区别 涉及面试题:并发与并行的区别? 并发是宏观概念...

  • 10.1 并发(concurrency)和并行(parallel

    10.1 并发(concurrency)和并行(parallelism)区别问题一:并发与并行的区别? 异步和这小...

  • 异步编程

    并发(concurrency)和并行(parallelism)区别 涉及面试题:并发与并行的区别? 异步和这小节的...

  • Java面试题(二):多线程

    五、多线程 35. 并行和并发有什么区别? 并发(concurrency)和并行(parallellism)是: ...

  • ObjC-多线程之GCD

    介绍 基本概念 串行和并行 并发和并行 下图描述的就是并发和并行的区别。 同步和异步 函数说明 Dispatch ...

  • Java并发编程整理之并发与并行概念讲解(1)

    Java并发编程整理之并发与并行概念讲解(1) 并发和并行区别 --[百度]:并发(Concurrent)当有多个...

  • 进程线程,并发并行区别

    并发和并行的区别: 先解释一下并发和并行:并发:cpu具有处理多个任务的能力并行:cpu具有同时处理多个任务的能力...

  • GCD介绍

    本文罗列一下GCD基础知识。 并行和并发 在英文世界里,并行 和 并发 的区别比较清晰,并行 对应 paralle...

  • 多线程技术应用一

    [TOC] 线程的基本概念 并行和并发的区别 并发(concurrency)和并行性(parallel)是两个概念...

  • Golang学习笔记之并发.协程(Goroutine)、信道(C

    Go是并发语言,而不是并行语言。 一、并发和并行的区别 •并发(concurrency)是指一次处理大量事情的能力...

网友评论

      本文标题:并发和并行的区别

      本文链接:https://www.haomeiwen.com/subject/apknlctx.html