美文网首页
CPU是海王?聊聊 主/子线程 和 同/异步 的关系

CPU是海王?聊聊 主/子线程 和 同/异步 的关系

作者: 懒猫君LazyCat | 来源:发表于2022-03-19 16:59 被阅读0次

最近表弟一直在找实习,经常会问我一些问题,有些问题在没有经历过真实工作时是真的不好理解的,所以我开了这个【表弟专栏】,专门为找工作的表弟解决一些疑惑。

这篇文章从计算机发展的角度出发,描述为什么计算机需要划分 "主/子线程" 和 "同/异步",希望这个故事你能喜欢。

开天辟地,计算机"老计"诞生

话说几十年前,老计(初代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,内存,硬盘之间的关系,这篇说下异步和线程 异步 因为异步操作无须额外的线程负担,并且使...

  • 线程与协程

    线程 python中的线程 不同的进程之间是充满敌意的,彼此是抢占、竞争cpu的关系,如果迅雷会和QQ抢资源。而同...

  • iOS多线程详解:概念篇

    讲多线程这个话题,就免不了先了解多线程相关的技术概念。本文涉及到的技术概念有CPU、进程、线程、同异步、队列等概念...

  • 线程相关的知识归纳整理

    CPU的核心数和线程数的关系 CPU的核心数和线程数一般是1:1的关系,Intel推出的超线程技术能使电脑的核心数...

  • 对同步和异步、阻塞和非阻塞的理解

    1、同步和异步是对调用双方之间的关系来说的 比如 `A 调用 B `此处A和B可以同处同一线程也可处于不同线程 a...

  • 线程数优化设置,cpu、内存、io问题排查

    cpu数、核数、与线程数关系: 1、线程数究竟设多少合理 2、线程池大小设置,CPU的核心数、线程数的关系和区别,...

  • 01 线程基础、线程之间的共享和协作

    1 基础概念 1.1 CPU核心数和线程数的关系 1.1.1 CPU与线程数量 cpu个数:是指物理上,也及硬件上...

  • iOS多线程

    一.概念 1.进程 2.线程 3.进程和线程的关系 4.多线程 5.主线程 6.同步 7.异步 同步和异步关注的是...

  • iOS面试相关part1--多线程网络

    1. 进程和线程 概念 线程是CPU调用(执行任务)的最小单位。 进程是CPU分配资源和调度的单位。 关系 一个程...

网友评论

      本文标题:CPU是海王?聊聊 主/子线程 和 同/异步 的关系

      本文链接:https://www.haomeiwen.com/subject/cjfndrtx.html