0%

为什么需要I/O多路复用

大部分应用都可以使用阻塞I/O模型就足够完成任务了。但是,有些应用需要满足以下的条件:

  • 使用非阻塞的方式检查文件描述符是否可以执行I/O操作。
  • 可以同时检查多个文件描述符。

我们可以使用非阻塞I/O或者多进程多线程的方式满足以上需求,但是又会带来新的问题:

  • 如果文件描述符很多,非阻塞I/O需要不停轮询每个文件描述符,造成CPU的浪费。
  • 如果每个文件描述符都创建一个新进程执行I/O操作,会带来开销过于昂贵的问题,包括创建进程、维护进程、父子进程间通信。
  • 多线程的方法虽然会占用较少的资源,但是正确地编写线程间通信代码是一项非常复杂的工作。

我们可以使用I/O多路复用技术解决上面提到的问题。

阅读全文 »