Linux下典型IO模型 +select多路转接模型(概念)
**目录** 1. 阻塞IO 2. 非阻塞IO 3. 信号驱动IO 4. 异步IO (同步概念) 5. select“多路转接”IO(篇幅所限放置下一篇博客中,持续更新哦) 在我们开始描述之前,请有必要的了解这个概念任何在IO过程中,其本质上均发生了俩个行为,“等待”,“拷贝”,等待数据准备完成,从内核中拷贝到用户空间可以想象,IO过程中浪费的大量时间均是在等待消耗,那么反之,为提高IO效率,最为核心的思想就是想办法让“等待时间”尽量少! 阻塞IO 发起一个功能操作,当要求进行获取数据时,如果内核没有将数据准备好,则一直会等待———直到数据准备好后才继续; 所有的套接字,默认的方式都是阻塞方式非阻塞IO 发起一个功能操作,要求获取数据时,内核表示未将数据准备完成,则执行的系统调用接口会立即返回并且报出响应错误(一般为EWOULDBLOCK) 非阻塞IO减少了等待时间,但是不成功返回时是意义不大的,所以一般程序猿在使用过程中,会对非阻塞接口进行反复调用(目的是反复尝试获取读写的文件描述符),这便是“轮询”方式,对cpu利用有较大的浪费; 信号驱动IO 信号驱动IO,顾名思义,在IO处理方...





