poll函数与select函数差不多
函数原型:
#include <poll>
int poll(struct pollfd fd[], nfds_t nfds, int timeout);
struct pollfd的结构如下:
struct pollfd{
int fd; // 文件描述符
short event;// 请求的事件
short revent;// 返回的事件
}
每个pollfd结构体指定了一个被监视的文件描述符。第一个参数是一个数组,即poll函数可以监视多个文件描述符。每个结构体的events是监视该文件描述符的事件掩码,由用户来设置。
linux poll机制是一种事件驱动的Io模型,它能够有效地处理大量并发的连接,在较少的系统资源下获得更好的性能。它与传统的select和epoll的区别是,它没有限制可监视的文件描述符,因此可以处理更大的数据量。利用poll机制可以在单线程的情况下同时处理多个I/O事件,避免了多线程/多进程的开销。