1从微机原理角度看
异步机制的传输效率高。异步传输和同步传输指的是计算机组织传输数据采用的两种不同的格式。
异步传输以字符为单位组织数据,每个字符由8~11个二进制位组成 ,其中第一位称为起始位,作为一个字符开始的标志,接下来的部分是该字符的有效部分,可根据需要选取5、6、7或8个二进制位。有效字符位之后是1或2个停止位,用来标志字符的结束。最后一位是奇偶校验位,用来检查传输中的错误。这一位也可以不用。
同步传输不是以字符为单位组织数据,而是将一定数量的二进制数据位 (如256位)按某种格式组装成帧(Frame)。每个帧由帧头(32 位)、数据(256位)和帧尾(24位)三部分组成。帧头通常包括帧的起始标志 (一个特别格式的字符)、地址和一些控制信息,帧尾则由16位CRC校验码 和帧结束标志组成。同步传输可利用帧尾的CRC校验码进行检错,利用帧头的控制信息实现流 控和差错控制。因此,其传输的可靠性比异步方式要高。而且,由于其传
输的有效数据位与传输的总的二进制位数之比要比异步传输高,因而其传 输效率较高。
在计算机或终端中,实现异步或同步数据格式的组装通常是由硬件的电路来实现的。微机的两个串行接口一般只提供异步格式的传输,因为在微机 主机或随机的插卡上集成了异步传输的接口电路。如果要进行同步通信,
如X.25网、IBM主机与终端的通信,需要在微机中另插一块同步通信卡。 现在,利用Modem进行异步传输也能够较好的结合同步传输的优点。尽管 在计算机与Modem之间采用异步格式传输,但Modem能将异步数据转换成同
步格式的数据,实现了Modem与Modem之间的差错控制和流量控制。
2 socket角度
所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。
异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。
并不是说谁好谁不好,只是同步的机制不适合在正式应用的项目当中(但自己测试还是可以的)
///////////////
阻塞 代表着在调用后等待调用的返回,因此会将调用者和被调用者两个进程/线程进行一定意义上的协调,因此与 同步 对应
而异步 调用的返回结果通常通过信号/回调机制实现,不会发生等待调用返回的情况,因此应该是非阻塞的