简而言之,
并发意味着在重叠的时间段内以无特定顺序启动,运行和完成的多个任务 . 并行性是指多个任务或一个独特任务的几个部分同时运行,例如,在多核处理器上 .
请记住,并发和并行不是一回事 .
Differences between concurrency vs. parallelism
现在让我们列出并发和并行之间的显着差异 .
并发是指两个任务可以在重叠的时间段内启动,运行和完成 . 并行性是指任务在同一时间运行,例如 . 在多核处理器上 .
并发性是独立执行进程的组合,而并行性是(可能相关的)计算的同时执行 .
并发性是指同时处理大量事物 . 并行性是指同时做很多事情 .
应用程序可以是并发的 - 但不是并行的,这意味着它同时处理多个任务,但没有两个任务在同一时刻执行 .
应用程序可以是并行的 - 但不是并发的,这意味着它可以同时处理多核CPU中任务的多个子任务 .
应用程序既不能并行也不能并发,这意味着它可以按顺序一次处理所有任务 .
应用程序既可以并行也可以并发,这意味着它可以同时在多核CPU中同时处理多个任务 .
Concurrency
当我们讨论最少两个或更多任务时,并发性基本上是适用的 . 当应用程序能够同时虚拟地执行两个任务时,我们将其称为并发应用程序 . 虽然这里的任务运行看起来像是同时的,但基本上它们可能不会 . 它们利用操作系统的CPU时间切片功能,其中每个任务运行其任务的一部分,然后进入等待状态 . 当第一个任务处于等待状态时,CPU被分配给第二个任务以完成它的任务 . 因此,基于任务优先级的操作系统分配CPU和其他计算资源,例如,记忆;轮流转向所有任务并给予他们完成的机会 . 对于最终用户,似乎所有任务都是并行运行的 . 这称为并发 .
Parallelism
并行性不需要存在两个任务 . 它实际上是通过为每个任务或子任务分配一个核心来物理运行部分任务或多个任务,同时使用CPU的多核基础结构 . 并行性要求硬件具有多个处理单元 . 在单核CPU中,您可能会得到并发但不是并行性 .
Asynchronous methods
这与并发和并行性无关,异步用于表示并发或并行任务的印象,但实际上异步方法调用通常用于需要远离当前应用程序而且我们不想要的工作等待并阻止我们的应用程序等待响应 .