http://www.javashuo.com/article/p-cntwfxgr-eb.htmlhtml
- fd指文件描述符
- select
- 时间复杂度O(n)
- 无差异轮询全部流,找出能读出数据,或者写入数据的流,对他们进行操做
- poll
- 时间复杂度O(n)
- poll本质上和select没有区别,
- 它将用户传入的数组拷贝到内核空间,
- 可是它没有最大链接数的限制,缘由是它是基于链表来存储的.
- epoll
- 时间复杂度O(1)
- 能够理解为event poll
- epoll其实是事件驱动(每一个事件关联上fd)的,
- 但select,poll,epoll本质上都是同步I/O,
- 由于他们都须要在读写事件就绪后本身负责进行读写,
- 也就是说这个读写过程是阻塞的,
- 而异步I/O则无需本身负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。
- AIO也是基于epoll,