世界是异步的.
太阳在转动, 花儿在开放, 汽车在马路上奔驰, 行人在来来往往.
有没有可能, 世界其实是同步的.
把 1 秒拆成 1000 个毫秒, 把 1 毫秒拆成 1000 个微秒...一直细分下去, 会不会有一个时间切片, 是只属于一个原子的...这个时间切片太短暂, 以至于我们不能观测到, 所以两件先后发生的事情, 在我们眼中是同时的.
能量是万物行动的原料, 能量耗尽的东西是不能自主行动的, 比如饿晕了的人, 电池耗尽的玩具, 汽油用光的汽车.
接通电源, 打开计算机. 源源不断的能量注入电池, 仿佛阳光照在大地.
程序争夺计算机的能量, 犹如亚马逊的热带雨林里, 遮天蔽日的树叶争夺着太阳的能量.
滴答, 处理器的时钟摆动了一次.
滴答, 它的心跳是因为谁.
滴答, 滴答, 滴答. 智慧的造物主给了所有动物一颗心脏. 每颗心脏只为它自己的主人而跳动.
有些东西终究要被共享, 为了更高的使用率, 更少的浪费. 比如, 出租车.
挥挥手, 这辆车现在为我服务; 到达目的地, 小车开始奔向下一位主人.
只有司机可以一直在车上, 乘客到站了就要下车.
贫困的小镇, 只有唯一一辆小车. 偏偏两户人家都要出远门, 你争我夺, 眼看就要大打出手. 司机一咬牙, 向第一家人拍拍胸脯, 明天白天上车, 傍晚到驿站歇脚; 司机一跺脚, 向第二户人家点点头, 明天夜里上车, 凌晨到旅店休息.
两户人坐着同一辆车. 两户人独享这同一辆车.
最难的人是司机, 什么时候这家下车, 什么时候那家上车, 需要拿捏地稳稳的.
屋漏偏逢连夜雨, 乘客原来不守时. 一整天, 司机每抽一根烟, 就给乘客打给电话, "下来没?". 得到的回答无非两种: "等一会儿.", "下来了."
电话响了, 是这家人打来的, "师傅, 我们一家在外边吃饭, 待会儿吃完我打给你, 你再过来."
司机哼起小调, 放下了手机放下烟. 一惊, 他们知道我的电话不? 安啦, 现在手机都有来电显示.
async并不是并发
只是在任务执行的空隙,去执行别的任务
是一种状态机
如果某个任务是没有空隙的,那么用async就没用
只有定时器,IO这类,执行过程中会有空闲的,才适用于async模型
打个比方, 某个小岛上只有一辆汽车, 岛民们就需要用 async 的方式共用它
有谁需要用车, 就打个电话叫醒 (wake) 司机
然后司机 (excutor) 就来接乘客
乘客不需要用车的时候, 如果司机来问 (poll), 就会回答不用 (pending)
如果乘客要用车, 那他就是准备好了 (ready)
所以要用好 async, 我们需要自己去实现这个乘客什么时候 pending, 什么时候 ready, 什么时候 wake