博客
关于我
吃个快餐都能学到串行、并行、并发
阅读量:232 次
发布时间:2019-02-28

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

这篇文章继续来唠唠概念,讲这三兄弟:串行(Serial)、并行(Parallel)、并发(Concurrent)。

(想自学习编程的小伙伴请搜索,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!)

吃快餐

出门在外吃饭是一件头疼的事,用我大学舍友一句话形容:如果不是没吃饭不能活,他是不会吃饭的。不管学生还是工作者,吃饭都是一件需要揪心的事,有食堂的企业员工纠结要在公司食堂吃饭还是在外面吃饭,没食堂的企业员工则纠结是吃面还是吃米饭。每到饭点,和同事去吃饭都会问一句废话:吃啥?然后相视而笑,继续吃快餐。。。

咱吃快餐也能学点知识,我来给大家一一道来。快餐有一个很明显的特点就是:排队!!! 目前我见过的有下面几种排队方式,刚好和咱们今天要讲的串行、并发、并行一一对应。

现在我们公司附近的快餐,人少的时候,就是排一条队,如下图所示,每个人按顺序排,一直往前走,如果看到想吃的菜,就用手指一指,快餐员工就会给你打菜,这个应该是很多快餐店都采用的方式,容易管理,但是有一点需要强调的就是如果一个同学只想吃米饭和豆芽,他还是需要排一整队到最后的结账台结账。这其实就是咱们计算机世界里面的串行,一条队伍,依次有序的执行着。

在这里插入图片描述
不过一到 12 点高峰期上面那种排队方式就撑不住了,分分钟排队排到外面晒太阳,这时为了提高效率,因为快餐店还有一片空地,所以又加了一套打菜装备和员工,这时很好的解决了一条队伍太长的问题,这时就是并行了,2 套打菜装备和员工各自互不干涉,完全独立,每套装备能够解决每个顾客的点菜需求。当然这要求比较高,需要餐厅有足够的空间可以放下两套装备,并且需要雇佣多一倍的员工来为顾客打菜,这里就类似计算机的双核。
在这里插入图片描述
除了上面的两种快餐排队方式,还见过下面这种的,只有一套打菜装备,但是却有很多个队,每个菜排一条队(现实中其实不止一个菜,而是多个菜,这里画图就简化成一个菜),每个人就只需要排自己想吃的菜的队伍,这一道道菜就像计算机的各个资源,比如 CPU、IO 等等,人就像一个一个进程,有些只需要 CPU 计算资源,有些还要 IO 资源,各取所需,这种方式就是并发。这种打菜方式和上面第一种所需要的资源是一样的:一套打菜装备和员工。每个顾客最终都需要走到结账这个步骤,而结账只有一个,也就是类似计算机的单核。
在这里插入图片描述

总结

那么回归到计算机世界,这三者是什么东西呢?早期计算机只有一个 CPU,也就是所谓的单核计算机,只有一个 CPU 去执行任务,所以只能是一个任务一个任务的跑,每个任务跑完才让下一个任务跑,也就是串行的,后面因为进程和线程概念的提出与实现,它们使得任务以进程的方式运行,拆分成多个时间片运行,而不是一次运行执行完任务,这样子在一个 CPU 运行中可以有多个任务在并发执行,这时还是只有一个 CPU,一个时间点只有一个任务在执行,而并行是因为 CPU 硬件的发展,出现多核 CPU,所以实现了真正的同一时间点能有多个任务在执行。

上面用快餐排队现象给大家解释了串行、并行、并发这三个概念,大家理解了么?如果不理解可能是我讲得不够透彻,可以留言跟我提一提建议;如果理解了,可否帮忙转发一下,多谢啦!

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

你可能感兴趣的文章
NewspaceGPT的故事续写能力太强了
查看>>
NewspaceGPT绘制时序图
查看>>
NewspaceGPT绘制类图
查看>>
new一个对象的过程
查看>>
new和delete用法小结
查看>>
new对象时,JVM内部究竟藏了什么小秘密?
查看>>
new操作符的实现原理
查看>>
Next.js React Server Components 教程
查看>>
NextGen Mirth Connect XStream反序列化远程代码执行漏洞(CVE-2023-43208)
查看>>
next项目部署到服务器pm2进程守护
查看>>
nexus 介绍
查看>>
nexus上传jar
查看>>
Nexus指南中的更新强调集成和透明度的重要性
查看>>
Nexus指南已经发布
查看>>
Nexus(1):Nexus的安装与配置
查看>>
NFC技术:概述
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS
查看>>
nfs mount 故障 mount.nfs: access denied by server while mounting 10.0.100.208:/backup_usb
查看>>
NFS Server及Client配置与挂载详解
查看>>