并发与并行的区别【图解+小例子】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:容易混淆的点

并行和并发,很多时候会被混淆理解为:多个线程或进程同时执行;单纯从表象来看的话,都是为了提高处理效率,但实际上区别还是很大的;


提示:以下是本篇文章正文内容,下面案例可供参考

一、初步理解

  • 并行是指的多个任务/事件在【同一时刻】发生;并发则是指的多个任务/事件在【同一时间区间内】交替发生;
  • 并行与并发的作用对象不一样:并行是【不同实体】执行的多个事件,并发是【同一实体】执行的多个事件;

有一定基础的话,似乎也能够理解;单从字面意思上,并行是真正意义上的同一时刻上的进行;并发则是为了提高对单个实体的利用效率;下面我再通俗说明一下二者的区别;

二、深入理解

1.并发

早期的计算机cpu是单核的,一个CPU在同一时间只能执行一个进程,当系统中有多个进程时,只能执行完一个进程后,才能执行下一个;
但是进程处理的过程中,会涉及到很多IO操作,而这个IO操作又很耗时,这个时候,CPU就只能干等着,CPU的资源就空闲在那里,只能等IO操作完了之后,CPU才能继续工作。
为了提高CPU的利用率,就提出了【并发】这个一概念,并落地了对应的cpu的利用算法,当一个任务在进行IO操作的时候,CPU去做别的任务,这下就大大提高了单核CPU的效率;
在这里插入图片描述
早期电脑多任务执行的时候(开着浏览器,开着千千静听,开着魔兽),看着像是同一时刻在进行,其实是这颗单核cpu在疯狂的【切换执行】,如果你这个时候,又打开了劲舞团就估计卡死了,单核cpu已经忙炸了;

2.并行

后来cpu有了双核之后,每个核心就可以【独立执行】一项任务,比如你打开了qq音乐,又打开了魔兽;那么就是一个核心执行QQ音乐,另一个核执行魔兽这个进程,各管各的,这个时候,两个程序是在同一时刻执行的;
在这里插入图片描述

3.并行+并发

如果cpu的核数小于当前的进程任务数,就需要所有的核心又要进行疯狂切换穿插执行了,这就是两种概念互补到达的高效执行;

总结:一个例子

结合上文的说明,举个例子:
【初期】早年,让张三这个单身汉开小餐馆,张三脑瓜子呆呆的,做事情一定要一件一件来,首先煮饭,煮饭是需要时间的,他就看着高压锅,傻傻的等,一顿年夜饭做好了,客人也都凉了;
后来张三就反思,这样做的确很傻;
【中期】前年由于早年的经历,学会了穿插去做事情,比如煮好饭之后,不再傻等饭熟,而是利用这个空闲的时间,去把菜洗好,切好…, 果然,做一顿饭的效率大大提高; 【一个人在穿插的做事,就是并发】
后来客人太多了,出菜效率还是不够;
【现在】张三就娶了一个老婆,张三也把前年穿插的经验告诉了他老婆,做一端饭,就两个人同时分工进行,张三洗米煮饭的时候,她老婆在洗菜切菜,如果这是用客人来,她老婆还能放下手上的事儿,迎接一下;小餐馆就能开心的办下去了;
【两个人同一时刻都在做事,就是并行,如果每个人都知道穿插着做事儿,就是并行+并发,大大提高效率】

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值