【Linux】select,poll,epoll区别

select poll epoll

  1. select单个进程打开的文件描述符有上限,为1024或者2048。select对于有响应的事件需要轮询来查找满足要求的事件。每次调用select都需要把文件描述符集合从用户态拷贝到内核态。
  2. poll描述fd的集合是链式的,解决了打开文件描述符数量的限制。同样需要轮询满足事件的文件描述符。也需要进行用户态和内核态的文件描述符拷贝。poll是水平触发。
  3. epoll使用了mmap内存映射技术红黑树的数据结构。通过三个函数来监听多个文件描述符,同时不随数量的上升效率呈线性的下降。mmap内存读写快于IO读写,及时共享映射内存的改变。

你可能感兴趣的:(linux,c++)