**目录** 1. 阻塞IO 2. 非阻塞IO 3. 信号驱动IO 4. 异步IO (同步概念) 5. select“多路转接”IO(篇幅所限放置下一篇博客中,持续更新哦)
在咱们开始描述以前,请有必要的了解这个概念
任何在IO过程当中,其本质上均发生了俩个行为,“等待”,“拷贝”,等待数据准备完成,从内核中拷贝到用户空间
能够想象,IO过程当中浪费的大量时间均是在等待消耗,那么反之,为提升IO效率,最为核心的思想就是想办法让“等待时间”尽可能少!异步
阻塞IOide
信号驱动IO函数
异步/同步概念code
到这里相信你们都很疑惑,那么“异步/同步”与“阻塞/非阻塞”不是同样的吗?
答:阻塞与非阻塞,主要强调操做是否当即返回;
异步与同步,主要强调功能完成的时序性,关注的是 “消息通讯机制”
这里引用经典实例来辅助理解:
异步通讯机制:
异步与同步的标准模板是这样的:blog
所谓同步,就是在发出一个调用时,在没有获得结果以前,该调用就不返回。可是一旦调用返回,就获得返回值了。换句话说,就是由调用者主动等待这个调用的结果。
而异步则是相反,调用在发出以后,这个调用就直接返回了,因此没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会马上获得结果。而是在调用发出后,被调用者经过状态、通知来通知调用者,或经过回调函数处理这个调用。接口
阻塞与非阻塞:进程
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
因为篇幅所制,将select多路复用IO模型以及poll,epollIO模型,以及相应TCP通讯代码,将在将来几篇博客上附上连接;
到这里你们就清楚了吧!哈哈,感谢您的观看;回调函数