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成员用来指定复杂的内容。

posted @ 2017-03-30 22:28  ren_zhg1992  阅读(512)  评论(0)    收藏  举报