接触计算机不久,在这里用通俗的语言谈谈我对同步和异步的理解。
前文说到cpu执行的方式无非就是电子对路径的选择。只要方向选对了,一定会到达终点,也就是屏幕。
但是,这就够了吗?
人类的欲望是无尽的。我们总是想要更快,更好,更强。
在这里,我们希望cpu执行的速度也就是效率更快。
怎么办呢?从数量和质量上入手。
方法有二:
1.增加cpu的数量
2.改进cpu执行的路径
先来看方法一,这种方法可以让指令同时在不同的设备上执行,放在电子线路里,相当于并联。这种办法可以大大提升电脑执行的效率。
给它起个名字吧,就叫同步调用,线程这个概念用在这里也可以。
(几个指令同时在不同的cpu里执行叫线程;进程的计量单位也可以叫线程。究其根本,线程和进程它们都是对状态的描述,cpu的多少不影响它们的出现)
但是,美中不足的是,cpu是稀缺资源,一台电脑不可能只通过增加cpu的量来实现效率的提升。
那就只有方法二了,不叫同步调用的全部起名叫异步调用,这里注意,异步和同步最大的区别就是时间上指令的运行无法同步(时间间隔再短,只要有间隔,都叫不同步)。因为狼多肉少,很多指令都在抢夺一个cpu资源,他们只能排队。
这种执行状态还有个名字,叫进程。
方法二,改进cpu执行的路径?太不具体。我们来分析一下使它具象化,这样才知道究竟具体该怎么做。
首先控制一下变量,在只有一个cpu的情况下,要使得电子最快到达终点怎么办?
很简单,提升速度,或者缩短路程。
提升速度呢,这就涉及到我的知识盲区了,虽然但是,电子的速度应该是一定的吧。
缩短路程呢?
缩短路程的原理有这样几种:
1.非必要不绕道,即该控制的从源头就控制,从第一个逻辑函数就控制住,这就是我们说的main函数了。
2.走路的时候遇到很难处理的任务,直接外包,回调函数f(f(X))就是把括号里的东西外包出去直接拿来用。
(外包是提升效率的好办法,计算机世界和人类社会皆是如此)
不过,芯片设计者那么聪明,这些应该早就考虑到了吧。
好像 至此,关于计算机效率我们能做的也就只有这些了。有点无能为力。
除了效率,用户还想要什么呢?