一、概述
多路复用属于同步I/O模型,主旨是同时监听多个FD,一旦有事件发生,发送至相应的处理器处理以提高性能。
举个例子,一个聊天程序,阻塞型的一个服务器只能跟一个客户端通信,要跟另一个通信就需要断开这个;
多路复用让服务器可以监听多个socket描述符,当一个客户端没有数据传来时,服务器可以转而服务其他有数据的客户端。
二、常用应用场景
客户端要处理多个socket
客户端同时处理连接和用户输入,比如聊天室
TCP服务器要同时处理监听socket和连接socket
服务器同时处理TCP和UDP
服务器要监听多个端口
三、举例
I/O框架libevent
基于libevent和协程的python网络框架gevent
python的高性能web框架tornado
redis文件事件处理器
nginx,apache事件模型