IO多路转发并发

Select

另外初始化fd_set类型的参数还需要使用相关的一些列操作函数,具体如下:

// 将文件描述符fd从set集合中**删除** == 将fd对应的标志位设置为0        
void FD_CLR(int fd, fd_set *set);
// 判断文件描述符fd**是否在set集合中** == 读一下fd对应的标志位到底是0还是1
int  FD_ISSET(int fd, fd_set *set);
// 将文件描述符fd**添加到set集合中** == 将fd对应的标志位设置为1
void FD_SET(int fd, fd_set *set);
// 将set集合中, 所有文件文件描述符对应的**标志位设置为0**, 集合中没有添加任何文件描述符
void FD_ZERO(fd_set *set);

Poll函数

poll的机制与select类似,与select在本质上没有多大差别

epoll

linux 内核实现IO多路转接/复用(IO multiplexing)的一个实现

IO多路转接的意思是在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。epoll是select和poll的升级版,相较于这两个前辈,epoll改进了工作方式,因此它更加高效。