摘要:并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

并行介绍

并行在操作系统中是指,一组程序按独立异步的速度执行,不等于时间上的重叠(同一个时刻发生)。

并发介绍

并发是指:在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行)。

并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。

操作系统并发程序执行的特点:

并发环境下,由于程序的封闭性被打破,出现了新的特点: ①程序与计算不再一一对应,一个程序副本可以有多个计算

②并发程序之间有相互制约关系,直接制约体现为一个程序需要另一个程序的计算结果,间接制约体现为多个程序竞争某一资源,如处理机、缓冲区等。

③并发程序在执行中是走走停停,断续推进的

并发和并行的作用

通过并发和并行能够使得应用程序可以充分利用多核以及GPU的计算能力,从而提高应用程序的性能,比如在以下几个方面中:

1.使用异步I/O操作可以提高应用程序的响应性。大多数的GUI应用程序都是用单个线程来控制所有UI界面的更新。UI线程不应该被占用过长时间,不然UI界面就会失去对用户的响应。

2.跨多线程的并行工作可以更好的利用系统的资源。具有多CPU和GPU的现代计算机,通过并行可以指数级的提高CPU计算受限的应用程序的性能。

3.同时执行多个I/O操作(如同时从多个网站上获取信息)可以提高总体的吞吐量(throughput),等待I/O相应的操作可以用来发起新的操作,或者是处理操作返回的结果。

并行和并发区别

区别一:

并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。

来个比喻:并发是一个人同时吃三个馒头,而并行是三个人同时吃三个馒头。

区别二:

并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。所以无论从微观还是从宏观来看,二者都是一起执行的。

并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。这就好像两个人用同一把铁锨,轮流挖坑,一小时后,两个人各挖一个小一点的坑,要想挖两个大一点得坑,一定会用两个小时。

并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作快速切换执行)。

区别三:

当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态。这种方式我们称之为并发(Concurrent)。

当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

总结

总得来说并行与并发各有其特点,要说它们两者哪个更好,则因情况而定。

并行和并发哪个好?并行和并发的概念和区别相关推荐

  1. 并发面试必备系列之并发基础与内存模型

    坐标上海松江高科技园,诚聘高级前端工程师/高级 Java 工程师,有兴趣的看 JD:https://www.lagou.com/jobs/6361564.html 并发面试必备系列之并发基础与内存模型 ...

  2. mysql并发更新数据,多用户并发修改数据解决方案。

    mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...

  3. python3并发性能_python几种并发实现方案的性能比较

    python几种并发实现方案的性能比较 前言 1. 偶然看到Erlang vs. Stackless python: a first benchmark, 对Erlang和 Stackless Pyt ...

  4. 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记

    <Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...

  5. Hadoop MapReduce概念学习系列之map并发任务数和reduce并发任务数的原理和代码实现(十八)...

    首先,来说的是,reduce并发任务数,默认是1. 即,在jps后,出现一个yarnchild.之后又消失.  这里,我控制reduce并发任务数6. 有多少个reduce的并发任务数可以在程序里控制 ...

  6. 并发集合和普通集合以及安全集合的区别

    并发集合和普通集合以及安全集合的区别 在 java 中有普通集合.同步(线程安全)的集合.并发集合.并发集合常见的有 ConcurrentHashMap.ConcurrentLinkedQueue.C ...

  7. 【Java并发编程】java高并发的解决方案(一)

    对于我们开发的网站,如果网站的访问量非常大的话,我们就需要考虑相关的并发访问问题了.而且并发问题也是中高级工程师面试中必问的问题,今天我们就来系统学习一下. 为了更好的理解并发和同步,我们先学习两个重 ...

  8. java 并发模型总类_java并发编程系列-内存模型基础

    java线程之间的通信对程序开发人员是完全透明的,内存的可见性问题很容易困扰很多开发人员.本篇博文将揭开java内存模型的神秘面纱,来看看内存模型到底是怎样的. 并发编程模型的分类 并发编程中需要处理 ...

  9. Golang并发模型:合理退出并发协程

    goroutine作为Golang并发的核心,我们不仅要关注它们的创建和管理,当然还要关注如何合理的退出这些协程,不(合理)退出不然可能会造成阻塞.panic.程序行为异常.数据结果不正确等问题.这篇 ...

最新文章

  1. 联想打字必须按FN+数字-fn打字
  2. 水冷超算平台落地北大,联想赋能行业智能化变革
  3. [书目20130216]深入浅出WPF
  4. python第二阶段 第六天 模块
  5. Intel汇编语言程序设计学习-第三章 汇编语言基础-下
  6. css中width:100%与width:auto的区别
  7. 转载:越早明白这四个道理越好!
  8. javaweb---三层架构++
  9. 修改 VS2013 项目属性的默认包含路径(全局)
  10. verilog or VHDL出租车计价器电路设计
  11. UVA572 Oil Deposits DFS求解
  12. 2、异步HTTP编程
  13. 信息学奥赛一本通 1036:A×B问题 | OpenJudge NOI 1.3 19
  14. java实现翻转二叉树_【leetcode刷题】[简单]226. 翻转二叉树(invert binary tree)-java...
  15. java.lang.ClassNotFoundException: org.springframework.web.util.WebAppRootListener
  16. [EntLib]UAB(Updater Application Block)下载
  17. 深圳车牌识别助力汽车检测,颠覆传统方式
  18. 烙铁使用注意事项及元器件件焊接要点
  19. PLG SaaS 案例:如何实践外链自动增长策略?
  20. 输入字符串 "I am a student",则输出 "student.a am I " 。

热门文章

  1. android x21,vivo X21成全球首批Android P适配机型!vivo :不小心就秀实力了
  2. 北京网站域名服务器,北京域名服务器
  3. [入门]树(treeview)控件制作导航的做法(三)
  4. H.264和HEVC如何正确的丢帧
  5. Linux 进程的 Uninterruptible sleep(D) 状态
  6. redis_cluster命令官方文档翻译及实践
  7. 鼠标在滑块上滚轮控制_200块钱的无线蓝牙鼠标好在哪里?洛斐薯片:除了颜值,也很实用...
  8. c语言比较三个数大小输出最小值,比较ABC三个数的大小,从小到大排列输出。,c语言比较三个数大小按从大到小顺序输出...
  9. python质数判断代码_Python 质数判断
  10. 2022年第五届“传智杯”全国大学生IT技能大赛——程序设计挑战赛