博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发与并行
阅读量:3530 次
发布时间:2019-05-20

本文共 1165 字,大约阅读时间需要 3 分钟。

目录


本文将解释并发性和并行性之间的区别。并发与并行主义长期以来一直是一个备受争议的话题。

IT行业的技术词汇有时非常混乱,并发并行就是其中的一部分。许多开发人员认为并发和并行意味着同时执行 50%是正确的,但有一个很大的区别:

  • 并发性让您感觉到并行性而并行性,顾名思义就是实际的并行性。

并行性的感觉意味着您在同一个核心上执行多个任务,核心在任务之间切换上下文并为它们提供服务。你也可以说这有时间切片/重叠时间段,因为你的单核只是将一些时间用于一个任务,然后花一些时间用于其他任务。

实际并行性意味着您可以并行执行多个核心上的多个任务

注意并发是一个更广泛的术语,并行性是它的一个子集

映射到现实世界,左图描绘了并行性,右图描绘了并发性。

为了实现实际的并行性,我们需要专用内核,独立内存等。

我们需要更多资源。

假设我们想要显示完成某项任务的进度条。现在我们真的不希望分配单独的核心来显示进度。

我们不希望性能在这里,我们希望在生理上最终用户感觉两个任务同时发生。

我们想要击败100 FPS的人眼能力,并在不强调我们的计算机资源的情况下给出并行性的幻觉。但是,假设我们想要处理具有一百万条记录的大型Excel文件,那么我们希望能够实现实际的并行性以实现性能。

为了实现并发性,我们需要独立地编写应用程序逻辑。例如,假设您希望处理员工数据,您希望将薪水增加x%,将奖金增加x%。

因此,您可以通过遵循不同的设计将应用程序分解为逻辑单元:

设计1

  • 将数据分成每个50%的大小。
  • 将每个50%作为单独的单元处理。

设计2

  • 处理奖金计算作为单独的单位。
  • 处理工资计算作为单独的单位。

设计3

  • 将数据分成每个50%的大小。
  • 分别为每50%数据处理奖金计算和工资计算。

可以有许多这样的设计和组合。因此,当您说您的应用程序支持并发时,您的应用程序应该组成小型独立单元。

现在你采用这些单元并在一个核心(并发)上运行,或者在多个核心上运行(并行)。所以并发性是关于设计的,而在并行性方面,我们从硬件角度讨论更多,2核心,3核心等等。

如果您尝试将每个并发代码作为并行运行,则会不必要地消耗资源。因此,问问自己是否想要一个幻觉(并发)或者你想要表现(并行)。

 

并发

并行

基本定义

使用重叠或时间切片在同一核心上执行多个任务。

在不同的核心上执行多个任务。

目标

在不强调资源的情况下感受并行性。

性能的实际并行性。

透视

软件设计:以协作方式独立执行计算的组合。

硬件:执行并行计算。

资源利用率

  • 并行性是并发的一个子集。
  • 并发可实现并行性。
  • 并发性更多地涉及软件设计,而并行性更多地涉及硬件。
  • 并发性给出了并行性的假象,而并行性则与性能有关。
  • 并发只需要一个核心,而并行性需要至少2个核心。

 

原文地址:

转载地址:http://kzzhj.baihongyu.com/

你可能感兴趣的文章
Vue学习笔记——常见简写&修饰符
查看>>
vue-element-admin源码解读——项目启动过程
查看>>
zcmu 1577 食堂的蛋饼(思维)
查看>>
zcmu 1796 wjw的数学题 (唯一分解定理+排列组合)
查看>>
hdu 4135 Co-prime(分解质因数+容斥定理)
查看>>
hdu 4407 Sum(分解质因数+容斥定理)
查看>>
HihoCoder - 1631 Cats and Fish(思维)
查看>>
HihoCoder - 1632 Secret Poems(规律题)
查看>>
zcmu 1900: Problem D: Dominos(单向并查集)
查看>>
zcmu 1059: 田忌赛马(贪心)
查看>>
zcmu 4944: 字符串处理
查看>>
浙江中医药大学2018级新生程序设计竞赛题解
查看>>
zcmu-新生宝贝们的第四次试水题解
查看>>
线段树详解(单点修改+区间修改和查询)
查看>>
线段树 单点修改+区间修改和查询 例题+代码
查看>>
zcmu-新生宝贝们的第五次试水题解
查看>>
fjut 1862 奇怪数列(判断一个数是否为2的整次方)
查看>>
C++ STL 之 set 与 multiset 的基本用法
查看>>
Powers of two(multiset的运用)
查看>>
并查集入门(普通并查集+带删除并查集+关系并查集)
查看>>