目录
一、概念
NIO(非阻塞IO模型)NIO即Non-Blocking IO,是非阻塞IO模型。概念限定范围:通过系统api获取数据。
也就是说调用系统api获取数据后,会立刻返回结果,程序不会阻塞等待数据。 根据返回的结果判断是否继续重复调用系统api获取数据。
二、操作流程
该模式下应用进程会以较高频率调用系统api进行数据获取,也就是说进程与内核会出现较多交互(进程用户态与内核态相互切换),直到获取到数据为止。
要注意的是,当内核数据准备好后,数据是需要由内核空间复制到用户的存储空间,这个复制数据的过程是阻塞的(也就是说,当数据特别大时,这个复制也会比较长时间,进程在这段时间内是不能立刻返回,需要等数据复制完成了返回结果)。
三、使用场景
一般将socket设置为NONBLOCK