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