同步、异步、并发、并行之间的区别与联系

发布于:2022-10-30 ⋅ 阅读:(297) ⋅ 点赞:(0)

一、并发和并行

1、并发(Concurrency)

并发是一个比较宽泛的概念,它单纯的代表计算机能够同时执行多项任务
对于单核处理器来说,它可以通过分配时间片的形式让一个任务运行一段时间,然后切换到另外一个任务再运行一段时间
在这里插入图片描述

2、并行(Parallelism)

对于多核处理器来说,我们可以在不同的核心上真正并行的执行任务,而不用通过分配时间片的方式运行
在这里插入图片描述

二、同步和异步

同步和异步是两种不同的编程模型

1、同步(Synchronous)

同步代表必须等到前一个任务执行完成之后,才能进行下一个任务
在同步中没有并行或者并发的概念
在这里插入图片描述

2、异步(Asynchronous)

异步代表不同的任务之间并不会相互等待,也就说执行任务A的同时也可以执行任务B
在这里插入图片描述
一个典型的实现异步的方式就是多线程编程,我们可以创建多个线程并且启动它们,在多核的环境下,每个线程就会被分配到独立的核心上运行,实现真正的“并行”
如果使用的是单核处理器,那么就会通过分配时间片的方式来处理这些多线程,这些线程依然是“并发”地进行

3、JavaScript

JavaScript本身是没有多线程的概念的,通过回调函数机制依然能够实现单线程的“并发”。
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到