典型IO
IO:即input、output-----输入输出;
IO的过程:1. 等待IO就绪;2. 进行数据拷贝
阻塞IO
阻塞IO:发起IO调用,如果IO未就绪,就一直等待
优点:流程比较简单
缺点:效率很低,资源浪费严重
非阻塞IO
非阻塞IO:发起IO调用,如果IO未就绪,立即报错返回;等待一段时间后再次发起IO调用
优点:效率相较于阻塞IO有所提高
缺点:需要循环操作,不够实时
信号驱动IO
信号驱动IO:自定义IO信号处理,等到IO就绪-----收到信号,打断当前操作,执行自定义的IO信号处理流程
优点:效率更高、实时性更强
缺点:操作流程更为复杂,需要自定义信号的处理
异步IO
异步IO:自定义IO信号处理,发起IO调用,调用立即返回,让系统完成IO,完成后通过信号通知
优点:资源利用率极高,效率极高
缺点:流程最复杂
阻塞与非阻塞的区别
阻塞:为了完成一个功能,发起一个调用,若完成该功能的条件不具备,则一直等待,直到条件完备。
非阻塞:发起一个调用,若完成该功能的条件不具备,立即报错返回。
通常用于描述某个接口的特性,区分该接口调用后是否能立即返回。
同步和异步的区别
此处的同步和异步不同于多线程和多进程中的同步和异步。
同步:一个功能完成后,才能进行下一个操作,如果不能完成则一直等待。
异步:发起一个调用,让别人来完成具体功能,不需要等待前面的操作。
同步和异步的外部区别就是:功能是否由自己完成,同步是自己完成,异步是由别人完成。
同步和异步通常用于描述某一功能的完成流程。