本文共 1165 字,大约阅读时间需要 3 分钟。
目录
本文将解释并发性和并行性之间的区别。并发与并行主义长期以来一直是一个备受争议的话题。
IT行业的技术词汇有时非常混乱,“并发”和“并行”就是其中的一部分。许多开发人员认为“并发和并行意味着同时执行”, 50%是正确的,但有一个很大的区别:
并行性的感觉意味着您在同一个核心上执行多个任务,核心在任务之间切换上下文并为它们提供服务。你也可以说这有时间切片/重叠时间段,因为你的单核只是将一些时间用于一个任务,然后花一些时间用于其他任务。
实际并行性意味着您可以并行执行多个核心上的多个任务。
注意:“并发是一个更广泛的术语,并行性是它的一个子集”。
映射到现实世界,左图描绘了并行性,右图描绘了并发性。
为了实现实际的并行性,我们需要专用内核,独立内存等。 我们需要更多资源。假设我们想要显示完成某项任务的进度条。现在我们真的不希望分配单独的核心来显示进度。 |
我们不希望性能在这里,我们希望在生理上最终用户感觉两个任务同时发生。
我们想要击败100 FPS的人眼能力,并在不强调我们的计算机资源的情况下给出并行性的幻觉。但是,假设我们想要处理具有一百万条记录的大型Excel文件,那么我们希望能够实现实际的并行性以实现性能。
为了实现并发性,我们需要独立地编写应用程序逻辑。例如,假设您希望处理员工数据,您希望将薪水增加x%,将奖金增加x%。
因此,您可以通过遵循不同的设计将应用程序分解为逻辑单元:
设计1
设计2
设计3
可以有许多这样的设计和组合。因此,当您说您的应用程序支持并发时,您的应用程序应该组成小型独立单元。
现在你采用这些单元并在一个核心(并发)上运行,或者在多个核心上运行(并行)。所以并发性是关于设计的,而在并行性方面,我们从硬件角度讨论更多,2核心,3核心等等。
如果您尝试将每个并发代码作为并行运行,则会不必要地消耗资源。因此,问问自己是否想要一个幻觉(并发)或者你想要表现(并行)。
| 并发 | 并行 |
基本定义 | 使用重叠或时间切片在同一核心上执行多个任务。 | 在不同的核心上执行多个任务。 |
目标 | 在不强调资源的情况下感受并行性。 | 性能的实际并行性。 |
透视 | 软件设计:以协作方式独立执行计算的组合。 | 硬件:执行并行计算。 |
资源利用率 | 轻 | 重 |
原文地址:
转载地址:http://kzzhj.baihongyu.com/