CPU是海王(聊聊|CPU是海王?聊聊 主/子线程 和 同/异步 的关系)
这篇文章从计算机发展的角度出发,描述为什么计算机需要划分 "主/子线程" 和 "同/异步",希望这个故事你能喜欢。最近表弟一直在找实习,经常会问我一些问题,有些问题在没有经历过真实工作时是真的不好理解的,所以我开了这个【表弟专栏】,专门为找工作的表弟解决一些疑惑。
开天辟地,计算机"老计"诞生 话说几十年前,老计(初代CPU)诞生了,老计诞生初期帮人们解决了诸多繁琐的计算工作,他可以无休无止地按照人们给的指令进行运算。
文章图片
就像图中一样,人们产生着各种问题,然后把问题丢入到一个队列中去,老计按照人们丢入的指令按顺序进行计算。
但就像现在互联网越来越卷一样,老计工作几年之后,发现要做的事情实在是太多了,有些计算要算完要搞到几十年后了,这可咋办呢?
这时人们认为老计该退休了,换了大计出场,大计的优点是相当卷,计算速度是老计的N倍,大大提升了计算的速度。
现实问题,大计海王进化(主/子线程) 大计有一天在诚诚恳恳工作时,被主管拉到了办公室,开始批评大计:
"大计啊,我知道你工作起来很努力,但你有点死板了啊,所有人给你分配的工作你都是按顺序操作,导致用户说我们的产品就像在挤牙膏,一点点挤出来。你能再加快工作速度吗?不能只靠加班来完成工作啊!"
文章图片
大计一脸mmp像,心想:“我特么要做什么,不还是你给到的指令啊”,但大计有着当代互联网人共同的目标("保住这份工"),所以大计也只能说:
"好的主管,这事我想想办法,明天给你个答复。"
大计这天工作到凌晨3点,下班后和总线一起去喝酒,说起了白天被主管叼这件事,总线说:
"这事好办啊,我平时给你传的各种指令,优先级不高的你让它不要走同一条路径传输呀,我们像渣男一样搞个高并发!给每个指令都送去温暖,钓住她们,让她们以为你是专一的男人,实际上你在同时和多人交往。"
大计一听直呼妙计妙计,总线不愧是和各个部门打交道的社交花,把泡妞能力用到工作上直接无缝衔接。
之前大计只有一条指令流水线时,他是按走流程,指令1处理完了,才处理指令2,是一个对指令专一的男子。
大计当即画出了这样的指令图:
文章图片
大计现在能"同时"处理 3条指令:M_0、A_0和B_0,说是"同时",实际上只是大计在这三条指令里频繁切换,M_0完成40%,就去招呼下A_0,A_0处理完80%后,然后再去招呼下B_0指令。
也就是说虽然工作时长是一定的,但给主管一种同时在处理3个指令的错觉。就靠着这套海王策略,大计终于完成了刁钻主管的需求。
不急的话,这事可以等等再做(同/异步) 随着大计海王能力的扩展,现在最高时可以"同时"和几百个指令妹子约会,已经是不可被替代的重要角色,现在主管每天看到大计都得磕个头,大计的话语权也越来越大,甚至开始反过来给主管提需求了:
"主管啊,你可要知道我主线程是负责和用户交互的重要线程啊,你每天在主线程丢那么指令,非常影响用户的体验了啊"
"你有些渲染UI的逻辑太频繁了,导致我做了很多无用的渲染,而且渲染逻辑也分重要程度啊,不重要的指令你等我空闲了再处理啊"
主管连连点头,说好的好的:"我们下次添加指令时,会告诉你这个指令是否需要立刻实施,如果不那么重要可以等你空闲下来再处理。"
于是乎,同步、异步 的概念诞生了:
文章图片
之前大计在处理 主线程 里的指令时,因为同一个线程指令是没有优先级的概念的,所以 线程里的指令还是按顺序处理的:M_0 -> M_1 -> M_2 -> M_3 -> M_4
但有了 异步 的概念后,假设这里的 指令M_1 不那么重要,那么大计在处理时是可以把 M_1 放到后面处理的:M_0 -> M_2 -> M_3 -> M_4 -> M_1
小结 【CPU是海王(聊聊|CPU是海王?聊聊 主/子线程 和 同/异步 的关系)】本篇【表弟专栏】给大家聊了 主/子线程 诞生的必要性,描述了CPU海王本质,以及和同/异步的区别和关联。关于 主/子线程 和 同/异步 的问题,大家可以在评论区一起讨论。最后如果大家喜欢这个专题,可以关注我的公众号:冰以东,会持续更新【表弟专栏】,希望能帮忙大家找到更好的工作。
推荐阅读
- kubernetes安装
- 【软件】重构与架构
- 手把手建立Roofline模型(CPU)
- Python学习之包与模块详解
- 程序员合集|【Pygame实战】如果你是赛车爱好者(这款新赛车游戏分分钟让你上瘾(超跑又是谁的梦想()))
- plc编程语言是c语言吗,PLC各种编程语言特点你了解多少()
- 界面化小程序|【免费测试】姓名测算性别—仅需这几步即可(来看程序员是如何解决的(爱了爱了~))
- c|c 是一种编译型编程语言,我写了一门编程语言,你也可以!
- 资讯|C 不再是一种编程语言
- Web安全|史上最简单的Spring Security教程(终极篇,注意,这不是终点,不是最后一篇!!!)