并发与并行的区别

并发是处理多任务的方式,并行是处理单任务的方法。

并发

并发性意味着应用程序同时处理多个任务。若计算机只有一颗CPU,应用程序不能在同一时刻处理多个任务,但会将多个任务相继开始交替执行。

并行

并行性意味着应用程序将任务分割成更小的子任务,这些子任务能够并行处理,如,在多个cpu上同时处理。

细节

并发性与应用如何处理多个任务有关。应用程序可以一次只处理一个任务,也可以同时处理多个任务。

并行性与应用处理单个任务的方式有关。应用程序可以从头到尾连续地处理任务,或者将任务分解成能够并行完成的子任务。

若应用程序支持并发,但不支持并行。意味着应用能同时处理多个任务,但没有将任务分解成子任务。

若应用程序支持并行,但不支持并发。意味着应用一次只处理一个任务,但任务被分解成子任务同时执行。

若应用程序既不支持并发也不支持并行。意味着应用一次只能处理一个任务,且任务不会被分解成多个子任务。

最后,应用程序可以是并发的,也可以是并行的,可以同时处理多个任务,还可以将每个任务分解为多个子任务。

然而,在这个场景中,并发性和并行性的一些好处可能会丢失,因为,计算机中的cpu已经相当繁忙地处理并发或并行。

两者组合可能只有很小的性能提升,甚至会损失性能。在采用并行模型前,确保做了充分的分析和度量。