深入了解Netty【四】IO模型
引言 IO模型就是操作数据输入输出的方式,在Linux系统中有5大IO模型:阻塞式IO模型、非阻塞式IO模型、IO复用模型、信号驱动式IO模型、异步IO模型。 因为学习Netty必不可少的要了解IO多路复用模型,本篇是基础。 名词概念 阻塞:指向调用方,在调用结果返回之前,调用方线程会挂起,直到结果返回。 非阻塞:指向调用方,在调用结果返回之前,调用方线程会处理其他事情,不会阻塞。 同步:指向被调用方,被调用方得到结果后再返回给调用方。 异步:指向被调用方,被调用方先应答调用方,然后计算结果,最终通知并返回给调用方。 recvfrom函数:系统调用,经socket接收数据。 5中IO模型 1、阻塞式IO模型(blocking I/O) 进程调用recvfrom函数,在数据没有返回之前,进程阻塞,直到数据返回后,才会处理数据。 2、非阻塞式IO模型(non-blocking I/O) 进程调用recvfrom函数,如果数据没有准备好就返回错误提示,之后进程循环调用recvfrom函数,直到有数据返回。 3、IO复用模型(I/O multiplexing) 进程调用select,如果没有套接字变为可读,则阻塞,直到有可读套接字之后,调用recvfrom函数,返回结果。 4、信号驱动式IO模型(signal-driven I/O) 进程先注册信号驱动,之后进程不阻塞,当数据准备好后