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

您所在的位置:网站首页 并发并行的区别与用法视频 并发、并行、异步、同步的区别与联系

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

2023-12-27 20:16| 来源: 网络整理| 查看: 265

并发、并行、异步、同步的区别与联系 并发(Concurrency)和并行(Parallelism)

并发表示计算机能够同时执行多项任务。

对于单核处理器,计算机可以通过分配时间片的方式,让一个任务执行一段时间然后切换到另一个任务,再运行一段时间,不同的任务会这样交替往复地一直执行下去。这个过程也被称作是进程或者线程的上下文切换(context switching)。

在这里插入图片描述

对于多核处理器,计算机可以在不同的核心上真正并行地执行任务,而不用通过分配时间片的方式运行,这种情况即为并行(Parallelism)。

异步(Asynchronous)和同步(Synchronous)

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

同步代表需要等到前一个任务执行完毕之后才能进行下一个任务;

异步代表不同的任务之间并不会相互等待、先后执行,在执行任务A的时候,也可以同时运行任务B。典型的实现异步的方式是多线程编程。

JavaScript本身没有多线程的概念,但可以通过函数回调机制,依然能够做到单线程的“并发”。比如可以通过fetch()同时访问多个网络资源,在调用fetch()函数的时候,程序并不会等待,而会直接继续执行下去。当获取到网络资源以后,回调函数才会被调起。虽然主程序和回调函数看起来是同时进行的,但它们依然是运行在同一个线程中。通过这种异步编程的方式,完全可以做到单线程的“并发”。 在这里插入图片描述

多线程编程 vs (单线程)异步编程

对于I/O密集的应用程序,如web应用经常执行网络操作、数据库访问,这类应用适合使用异步编程的方式。如果使用多线程的方式,则会浪费不少的系统资源。 在这里插入图片描述

多线程编程更适合于计算量密集的应用,比如视频图像处理、科学计算等,它能让每个CPU核心发挥最大的功效,而不是消耗在空闲的等待上。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3