select、poll和epoll多路复用
Nginx和Redis中都用到了epoll多路复用模型,本节将讲述常见的多路复用模型:select、poll和epoll,以及部分示例代码,还是先回顾IO的两个重要过程:
任何IO过程中,都包含两个步骤:第一是等待,第二是拷贝。而且在实际的应用场景中,等待消耗的时间往往都远远高于拷贝的时间。让IO更高效,最核心的办法就是让等待的时间尽量少。
在以前的文章中介绍了五种IO模型,分别是阻塞式IO、非阻塞式IO、信号驱动IO、多路复用IO、异步IO;前四种都属于同步IO。今天重点介绍的是多路复用IO,多路复用IO通俗讲就是一次等待多个文件描述符,减少了等待时间,提高了IO过程的效率(此IO过程并不是只是从内核态到用户态数据的拷贝,而是从发起IO请求直到IO完成的过程),接下来将介绍Linux的三种多路复用模型。