美文网首页
多线程 并行和并发理解

多线程 并行和并发理解

作者: 夜空下最亮的亮点 | 来源:发表于2019-03-29 17:49 被阅读0次

并行(parallelism)

这个概念很好理解。所谓并行,就是同时执行的意思,无需过度解读。判断程序是否处于并行的状态,就看同一时刻是否有超过一个“工作单位”在运行就好了。所以,

并发(concurrency)

要理解“并发”这个概念,必须得清楚,并发指的是程序的“结构”。当我们说这个程序是并发的,实际上,这句话应当表述成“这个程序采用了支持并发的设计”。好,既然并发指的是人为设计的结构,那么怎样的程序结构才叫做支持并发的设计

正确的并发设计的标准是:使多个操作可以在重叠的时间段内进行(two tasks can start, run, and complete in overlapping time periods)。
并发设计让并发执行成为可能,而并行是并发执行的一种模式。
并行指物理上同时执行,并发指能够让多个任务在逻辑上交织执行的程序设计

行,当然是在重叠的时间段内执行,但是另外一种执行模式,也属于在重叠时间段内进行。这就是协程

使用协程时,程序的执行看起来往往是这个样子:

coroutine.jpg

task1, task2 是两段不同的代码,比如两个函数,其中黑色块代表某段代码正在执行。注意,这里从始至终,在任何一个时间点上都只有一段代码在执行,但是,由于 task1 和 task2 在重叠的时间段内执行,所以这是一个支持并发的设计。与并行不同,单核单线程能支持并发。

。其实主要还是因为这两个词都有狭义和广义的解释的原因。如果从广义上来说,并行必然是并发,因为广义的并发的高度抽象定义可以说是,多个问题或者问题的几个部分在一个重叠的时间段内被解决。

不过个人还是喜欢用并发来表示通过调度器以及上下文切换等实现的多任务或者其他类似的技术和手段(其实是不知道用什么词代替好),用并行来表示严格的物理上的并行。

相关文章

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

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

  • 多线程 并行和并发理解

    并行(parallelism) 这个概念很好理解。所谓并行,就是同时执行的意思,无需过度解读。判断程序是否处于并行...

  • iOS多线程- GCD详解(二)

    前言 该篇介绍并发,串行,并行,异步和同步详解和使用,以及其他方法,在理解多线程之前,必须先知道这几个概念。 并发...

  • 一. Java并发和多线程简介

    Java并发是一个涉及了java平台上多线程(MultiTheadings)、并发(Concurrency)和并行...

  • go 的并发机制

    并发与并行的概念 ① 多线程程序在单核cpu上运行就是并发;② 多线程程序在多核cpu上运行就是并行; gorou...

  • 多线程

    并发 && 并行 多线程的同时执行并非"并行", 而是"并发", "并发"无论从宏观还是微观上都是同时执行的, 而...

  • python网络爬虫:多任务-进程、线程

    一 、实现多任务的方式 多线程多进程协程多线程+多进程 并行,并发 并行:同时发起同时执行,(4核,4个任务)并发...

  • iOS 多线程技术总结

    概览 进程与线程的概念 多线程的由来 并行与并发 多线程的实现 串行与并行 线程的几种状态 串行队列与并发队列区别...

  • java多线程学习(二)

    一、并发和并行 并发是在一段时间内交替执行多个任务。并行则是在同一时间内同时执行多个任务。并行是特殊的并发。多线程...

  • python 多进程 多线程 程序

    这个纯粹为了增加理解,将很多比较好的资料进行归纳总结。 1、理论汇总 并发和并行image.png 多进程和多线程...

网友评论

      本文标题:多线程 并行和并发理解

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