网络I/O模型--5种常见的网络I/O模型
阻塞与非阻塞 阻塞就是卡在那儿什么也不做,双方之间也没有信息沟通。 非阻塞就是即使对方不能马上完成请求,双方之间也有信息的沟通。 同步与异步 同步就是一件事件只由一个过程处理完成,不论阻塞与非阻塞,最后完成这个事情的都是同一个过程 异步就是一件事由两个过程完成,前面一个过程通知,后面一个过程接受返回的结果。 异步和事件驱动(multi IO) 异步是指数据准备好并且已经拷贝到用户空间,在通知用户来取数据 事件驱动理解为准备好数据了但是没有拷贝到用户空间,这个时候去通知用户,用户再去取数据,经过拷贝过程取得数据。 5种常见的网络I/O模型 blocking I/O -- 阻塞类型的I/O nonblocking I/O -- 非阻塞类型的I/O I/O Multiplexing -- 多路复用型I/O Signal-Driven I/O -- 信号驱动型I/O Asynchronous I/O -- 异步I/O 1. blocking I/O -- 阻塞类型的I/O 流程图如下: linux下socket默认是阻塞的,阻塞模式在准备数据和拷贝数据两个过程都是阻塞的,在这期间客户端一直卡着,双方也没有数据交流。 2.nonblocking I/O -- 非阻塞类型的I/O 流程图: