epoll和select、poll的区别(2)
一.select 和 poll的区别
select的两个限制:
1.一个进程能打开的最大文件描述符个数是有限的 1024 可以通过 unlimt -n number来修改
2.selcet 中的fd_set集合容量的限制(FD_SETSIZE),不可改变。
poll的限制:
1.一个进程能打开的最大文件描述符个数是有限的 1024 可以通过 unlimt -n number来修改
共同点:都需要遍历文件描述符集合,找到发生事件的文件描述符。
二.epoll和select、poll的区别
最后一点是因为:
struct epoll_event { __uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ };
typedef union epoll_data
{
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
}epoll_data_t;
epoll_data_t是一个联合体,其中4个成员中使用最多的是fd,它指定事件所从属的目标文件描述符(不需要遍历了)。ptr成员用来指定复杂的内容。