总结归纳了一些I/O多路复用的相关知识点:
I/O复用:客户端发来请求,服务器端会产生一个进程对其进行服务,每当来一个客户请求就产生一个
进程来服务,然而进程不可能无限制产生,因此为了解决大量客户端访问的问题,引入了I/O
复用技术。 即一个进程可以同时对多个客户请求进行服务
I/O复用的"介质"是进程,进程也是靠调用select 和 poll来实现的;客户端发来的IO是并发的但是IO所需的读写数据
多数情况下是没有准备好的,因此就可以利用一个函数来监听IO所需的这些数据的状态,一旦IO有数据可以进行读写
了,进程就来对这样的IO进行服务。
IO多路复用指内核一旦发现进程指定的一个或多个IO条件准备读取,它就通知该进程。
上网归纳了一下IO多路复用适用的场合
1、当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用
2、当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现
3、如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用I/O复用
4、如果一个服务器既要处理TCP,又要处理UDP,一般也要用I/O复用
5、如果一个服务器要处理多个服务或多个协议,一般也要使用I/O复用
与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,
也不必维护这些进程/线程