2014年(11)
分类: LINUX
2014-06-06 17:43:55
I/O多路复用:输入/输出多路复用。
数据通信系统或计算机网络系统中,传输媒体的带宽或容量往往超过传输单一信号的需求,为了有效地利用通信线路,希望一个信道同时传输多路信号,这就是所谓的多路复用。
1.I/O复用的典型应用场合:
1、当客户处理多个描述字(通常是交互式输入和网络套接口)时,必须使用I/O复用。
2、如果一个服务器要处理多个服务或者多个协议(例如既要处理TCP,又要处理UDP),一般就要使用I/O复用。
目前支持I/O复用的系统调用有select、pselect、poll、epoll:
1、select函数
该函数允许进程指示内核等待多个事件中的任何一个发生,并仅在有一个或多个事件发生或经历一段指定的时间后才唤醒它。
采用select()函数实现I/O 多路复用的基本步骤如下:
(1) 清空描述符集合
(2) 建立需要监视的描述符与描述符集合的联系
(3) 调用select()函数
(4) 检查所有需要监视的描述符,利用FD_ISSET 判断是否准备好
(5) 对已准备好的描述符进行I/O 操作