I/O 多路复用机制讲解
你全力以赴的极限,搞不好只是别人的起点。
什么是多路复用?
我们一般说的I/O是指的网络I/O,多路是指多路指多个TCP连接(即 socket 或者 channel),复用指复用一个或几个线程。
就是指一个或一组线程处理多个 TCP 连接。最大优势是减少系统开销小,不必创建过多的进程/线程,也不必维护这些进程/线程。IO 多路复用的三种实现方式:select、poll、epoll。
io多路复用技术有哪些种类:
select:
操作系统提供的系统调用函数,用于等待文件描述词(普通文件、终端、伪终端、管道、FIFO、套接字及其他类型的字符型)状态的改变。 是一个轮循函数,循环询问文件节点,可设置超时时间,超时时间到了就跳过代码继续往下执行。
poll:
同select原理差不多,可以理解为改良版的select。它是对多个文件描述符进行轮询,如果某个文件描述符处于可读/可写状态,或者发生错误/异常,那么就立即返回。
epoll:
使用基于事件驱动的方式代替了顺序扫描,且fd的个数不受限制,因此性能更高。当fd就绪时,会立即回调函数。