5种IO模型
阻塞IO:一直等待CPU处理,不干其他事情
非阻塞IO:请求CPU处理,若CPU正忙则返回错误给非阻塞IO,非阻塞IO离开过一段时间再来请求,直到CPU处理
IO多路复用
信号IO:请求CPU处理并提供一个信号函数,然后继续其他操作,CPU准备好了就发信号通知
异步IO:请求CPU后离开做其他操作,CPU完成IO后通知
IO多路复用
一个线程去记录多个连接的信息,然后选择处理其中的某个,期间其他连接处于阻塞状态等待处理
三种实现方法
select,poll,epoll(线程安全,且告知连接内部数据)
Nginx使用的就是IO多路复用epoll处理并发连接,Redis也是使用epoll处理多个客户端连接