当一个节点和多个节点建立连接时,如何高效的处理多个连接的数据,下面具体分析两者的区别。
1. select函数
函数原型:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
参数介绍:(1)nfds -- fdset集合中最大描述符值加1
(2)fdset -- 一个位数组,其大小限制为_FD_SETSIZE(1024)
位数组的每一位代表的是其对应的描述符是否需要被检查。
(3)readfds -- 读事件文件描述符数组
(4 )writefds -- 写事件文件描述符数组
(5)exceptfds -- 错误事件文件描述符数组
(6)timeout -- 超时事件,该结构被内核修改,其值为超时剩余时间。
对应内核:select对应于内核中的sys_select调用,sys_select首先将第二三四个参数指向的fd_set拷贝到内核,然后对每个被SET的描 述符调用进行poll,并记录在临时结果中(