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

并发和并行的区别

作者: 潭潭_180 | 来源:发表于2019-03-27 12:35 被阅读0次

如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统。如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。并发系统与并行系统这两个定义之间的关键差异在于“存在”这个词。

在并发程序中可以同时拥有两个或者多个线程。这意味着,如果程序在单核处理器上运行,那么这两个线程将交替地换入或者换出内存。这些线程是同时“存在”的——每个线程都处于执行过程中的某个状态。如果程序能够并行执行,那么就一定是运行在多核处理器上。此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行。

我相信你已经能够得出结论——“并行”概念是“并发”概念的一个子集。也就是说,你可以编写一个拥有多个线程或者进程的并发程序,但如果没有多核处理器来执行这个程序,那么就不能以并行方式来运行代码。因此,凡是在求解单个问题时涉及多个执行流程的编程模式或者执行行为,都属于并发编程的范畴。

摘自:《并发的艺术》 — 〔美〕布雷谢斯

你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。

你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。

你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

并发的关键是你有处理多个任务的能力,不一定要同时。

并行的关键是你有同时处理多个任务的能力。

所以我认为它们最关键的点就是:是否是『同时』。

问:并发是不是一个线程,并行是多个线程?

答:并发和并行都可以是多个线程,就看这些线程能不能同时被(多个)CPU执行,如果可以就说明是并行,而并发是多个线程被(一个)cpu轮流切换着执行。

单核CPU多任务:并发(不必等上一个任务完成才开始下一个任务)、串行(只有一个实际执行任务的CPU核)

多线程:并发、串行(所有线程都在同一个核上执行);并发、并行(不同线程在不同的核上执行)

相关文章

  • 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/hoaavqtx.html