首页 > 其他 > 详细

并发&并行的概念

时间:2021-06-13 19:11:03      阅读:31      评论:0      收藏:0      [点我收藏+]

并发(concurrent)

假设计算机只有一个 CPU,则应用程序可能无法完全同时完成多个任务,但是在应用程序中一次可能要完成多项任务。为了同时完成多个任务,CPU 在执行期间会在不同任务之间进行切换。

类似下面这张图一会执行 Task1 一会执行 Task2,但是并不会一起执行。

技术分享图片

可能你看到这张图的时候会惊呼:这不就是多线程的执行方式吗?

是的,这就是多线程的执行方式;注意,这里说的是执行方式。多线程并不等于 CPU,多线程指的是同一个程序中有多个执行的线程,这些线程可能由不同的 CPU 内核处理。


另外值得注意的是:这里不考虑 CPU 超线程技术,所以上图中的两个任务永远不会同一时间开始执行,Task1 或 Task2 必定有一个先执行。

通过上面说的这些,我们可以得出三个重点:

  • 单核 CPU
  • 两个(多个)任务永远不会同一时间开始执行
  • 同时完成多个任务

所以个人理解,并发就是 CPU 执行多任务的一种方式,这些任务交替执行并且大概在相同的时间内完成,但是 CPU 并不是同时执行这些任务。也可以简化为:多个线程轮流使用同一个 CPU 核心,叫做并发。

下图展示了多线程和 CPU 之间的关系:

技术分享图片

这里的 CPU 你可以认为是多核 CPU 中某个核心的一个线程或者就是一个单核的 CPU。这里说 “某个核心的一个线程”,是因为 超线程 技术;如果这里只是说某个 CPU 核心,则该核心使用了超线程技术,就有可能会导致两个任务同时开始。
可以简单的理解超线程技术:使某个物理内核实现并行计算。超线程技术我也不是很理解,就知道能并行计算。

并行

先说一下,并发和并行是不一样的。

并行执行是指,计算机有多个 CPU 或一个 CPU 有多个核心,同时执行多个任务。但是,并行执行不等于并行性。

并行执行如下图所示:

技术分享图片

并行并发执行

根据 CPU 上分布的不同任务,得出的结论就是:在同一 CPU 上执行的任务是并发执行的,而在不同 CPU 上执行的线程是并行执行的。

技术分享图片

并发&并行的概念

原文:https://www.cnblogs.com/daihao-g/p/14880460.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!