计算机与操作系统中无处不在的同步与异步( 二 )


/**javascript */import { readFile } from 'fs';readFile('<directory>', callback);//readFile函数立即返回//不会阻塞程序的执行//某个时间点文件读取完成后执行callback回调异步的重点在于调用函数后接下来的程序可以继续和文件读取同时执行,这就是高效之处 。
然而,异步执行对程序员来说是一种负担,无论在阅读还是编写上都不容易理解 。
有的同学可能会问,同步的情况下可以得到函数的结果继续执行,那么异步的时候又怎么知道函数执行完成了呢?
这里一分为二:

  1. 不需要关心结果,执行就ok
  2. 需要结果进行更多的操作
第一种无需讨论,比较简单 。
第二种情况通常有两种方式,一种是通知机制,任务完成后发送信号通知上一级,例如linux的signal方式 。还有一种就是回调,就是我们常说的callback 。
最后需要注意的是,并非所有的情况下异步就一定比同步高效,还要结合具体的业务或者I/O复杂程度来分析 。但是不管何时何地,同步意味着双方要相互等待,相互依赖,二异步则意味着双方相互独立,各行其道 。希望这篇文章对大家理解这两个重要的概念有所帮助 。




推荐阅读