Concurrency vs Parallelism
并发性意味着在没有特定顺序的情况下,在重叠的时间段内开始、运行和完成多个任务。
并行性指的是多个任务或某一特定任务的多个部分同时运行,例如在多核处理器上。
记住,并发和并行不是一回事。
Concurrency
当我们讨论至少两个或多个任务时,并发性基本上是适用的。
当一个应用程序可以同时执行两个任务时,我们称之为并发应用程序。
虽然这里的任务看起来是同时运行的,但实际上它们可能不是。
它们利用了操作系统的CPU时间分割(time-slicing
)特性,其中每个任务运行其任务的一部分,然后进入等待状态。
当第一个任务处于等待状态时,CPU被分配给第二个任务来完成它的一部分任务。
基于任务优先级的操作系统,分配CPU和其他计算资源,如内存;
轮流做所有的任务,给他们完成的机会。
对于最终用户来说,似乎所有的任务都是并行运行的。这就是所谓的并发性。
Parallelism
并行不需要两个任务的存在。它实际地运行任务的部分或多个任务,同时使用CPU的多核基础设施,为每个任务或子任务分配一个核心。
并行性需要有多个处理单元的硬件。在单核CPU中,您可以获得并发性,但不能获得并行性。
区别
现在让我们列出并发性和并行性之间的显著差异。
并发性是指两个任务可以在重叠的时间段内启动、运行和完成。并行性是指任务同时运行。在多核处理器上。
并发性是独立执行进程的组合,而并行性是同时执行(可能是相关的)计算。
并发性是指同时处理许多事情。并行就是同时做很多事情。
应用程序可以是并发的,但不能是并行的,这意味着它同时处理多个任务,但是没有两个任务是同时执行的。
应用程序可以是并行的——但不是并发的,这意味着它同时在多核CPU中处理一个任务的多个子任务。
应用程序既不能是并行的,也不能是并发的,这意味着它要按顺序一次处理所有的任务。
应用程序可以是并行的,也可以是并发的,这意味着它同时在多核CPU中处理多个任务。