在我们编程的时候,经常会遇到一个概念——异步,诸如异步通信,异步线程,异步代码,异步调用,异步编程等等,那么
什么是异步呢?
为什么要异步?
异步的典型场景是什么?
如何使用异步呢?
......
异步——通信?
老码农初识异步是从单片机的串行通信开始的。串行通信,是指通信双方按位进行,遵守时序的一种通信方式。串行通信有两种类型,一种是同步通信,另一种就是异步通信。
同步通信的特点是要求发送时钟和接收时钟保持严格的同步,异步通信的发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。异步通信中的接收方并不知道数据什么时候会到达,发送方发送的时间间隔可以不均匀,接收方是在数据的起始位和停止位的帮助下实现信息同步的。简单的说,异步是扔出去一段数据,对方靠着内容前后所检查到的特殊性发现了它,把这个内容存下来;而同步通信是对方在时刻等着发送方发号施令,发送方告诉对方要发送了,然后双方一拍即合。
从通信效率来看,同步通信效率高,异步通信效率较低。但从实现方式来看,同步通信较复杂,异步通信相对简单,计算机的接口大多是异步的。
进一步,对通信网络而言,同步网一般是指网络内所有电信设备的时钟(或载波)提供同步控制信号,使它们的频率工作在共同速率(或频率)上的支撑网。同步网可分为准同步网和同步网两类,由具有相同标称频率的不同基准时钟互相比对的同步网称为准同步网,由单一基准时钟控制的称为同步网。我国和大多数国家采用分级主从同步法,国家间采用准同步法。异步网络不需要时间同步,可以在任何节点完成逐分组的转发,这种分组的不可预测和不规则机制增加了网络的阻塞率。然而,异步网络具有同步网络所不具备的低成本、低复杂度、高健壮性和高灵活性,通过合理设计交换的结构和协议,也可达到良好的交换性能。
关于通信网乃至TMN,太容易给人带来回忆了。跳出涌现的往事,对程序员而言,异步的概念有了相当程度的延伸。
视频资料获取后台私信【架构】
异步——编程?
编程中的同步与异步往往是指两个对象之间的调用关系:
- 同步调用:调用者发出一个调用时,在没有得到结果之前,该调用不返回。一旦调用返回,就得到返回值了,也就是由调用者主动等待这个调用的结果。
- 异步调用:调用者发出一个调用之后,这个调用就直接返回了,没有返回结果,也就是当一个异步调用发出后,调用者不会