并发和并行之间的区别是什么?
当前回答
这个来源的解释对我很有帮助:
并发性与应用程序如何处理多个任务有关一个应用程序可以一次处理一个任务(按顺序)或同时处理多个任务(同时)。另一方面,并行性与应用程序处理每个单独的任务。应用程序可以处理该任务从开始到结束依次执行,或将任务拆分为子任务可以并行完成。正如您所看到的,应用程序可以是并发的,但不能是并行的。这意味着它同时处理多个任务,但是这些任务不分解为子任务。应用程序也可以是并行的,但不能是并发的。这意味着应用程序一次只能处理一个任务,而此任务被分解为可以并行处理的子任务。此外,应用程序既不能是并发的,也不能是并行的。这意味着它一次只能处理一个任务从未分解为并行执行的子任务。最后,应用程序也可以是并发和并行的,在它可以同时处理多个任务,也可以中断将每个任务分解为子任务以并行执行。然而并发性和并行性的好处可能会因此而丧失由于计算机中的CPU已经处于相当繁忙的状态仅具有并发性或并行性。结合起来可能会导致只有很小的性能增益或甚至性能损失。
其他回答
太好了,让我用一个场景来展示我的理解。假设有三个孩子:A,B,C。A和B说话,C听。对于A和B,它们是平行的:A: 我是A。B: 我是B。
但对于C来说,他的大脑必须同时进行听A和B的过程,这可能是:我是我A是B。
这篇惊人的博客节选:
并发和并行之间的区别:并发是指两个任务可以在重叠的时间段。并行性是指任务在例如在多核处理器上。并发是独立执行进程的组成,而并行是同时执行(可能相关)计算。并发是指同时处理许多事情。相似一次做很多事情。应用程序可以是并发的,但不能是并行的,这意味着它同时处理多个任务,但没有两个任务在同一时刻执行。应用程序可以是并行的,但不能是并发的,这意味着它在多核CPU中同时处理一个任务的多个子任务时间应用程序既不能并行,也不能并发,这意味着它一次一个地、顺序地处理所有任务。应用程序既可以是并行的,也可以是并发的,这意味着它在多核CPU中同时处理多个任务时间
并发是编程术语。它是关于多个任务的,这些任务开始运行并以无特定顺序在重叠的时间段内完成。并发性由操作系统管理。当多个线程想要访问同一资源时,线程会遇到竞争条件问题。此外,它们还存在死锁,彼此等待,阻止自己运行。例如,你想一边吃饭一边说话。首先你需要吞下嘴里的食物或停止咀嚼,然后你可以说话(你在划水),说话后你可以再咬一口。
并行性是一个硬件术语。它是关于在具有多个计算资源(如多核处理器)的硬件上同时运行的多个任务。如果你能在咀嚼食物时说话,这将是平行的。平行的一个例子是,一个人可以同时唱歌和跳舞。
并发性=>在共享资源的重叠时间段内执行多个任务时(可能最大化资源利用率)。
并行=>当单个任务被划分为可以同时执行的多个简单的独立子任务时。
这个来源的解释对我很有帮助:
并发性与应用程序如何处理多个任务有关一个应用程序可以一次处理一个任务(按顺序)或同时处理多个任务(同时)。另一方面,并行性与应用程序处理每个单独的任务。应用程序可以处理该任务从开始到结束依次执行,或将任务拆分为子任务可以并行完成。正如您所看到的,应用程序可以是并发的,但不能是并行的。这意味着它同时处理多个任务,但是这些任务不分解为子任务。应用程序也可以是并行的,但不能是并发的。这意味着应用程序一次只能处理一个任务,而此任务被分解为可以并行处理的子任务。此外,应用程序既不能是并发的,也不能是并行的。这意味着它一次只能处理一个任务从未分解为并行执行的子任务。最后,应用程序也可以是并发和并行的,在它可以同时处理多个任务,也可以中断将每个任务分解为子任务以并行执行。然而并发性和并行性的好处可能会因此而丧失由于计算机中的CPU已经处于相当繁忙的状态仅具有并发性或并行性。结合起来可能会导致只有很小的性能增益或甚至性能损失。