select:
1 默认支持监听数为1024。
2 两次轮询:内核在监听时对范围内的无论是否相关的fd都进行轮询处理,在用户态依然如此。
3 两次拷贝:内核在得到数据时进行一次拷贝,将其送至用户态时又进行一次拷贝。
epoll:
1 监听数量没有限制。
2 只在内核中对“感兴趣”的fd进行监听,用户态无需轮询处理。
3 一次拷贝:在内核中直接将数据拷贝到指定位置(内核与用户空间mmap一块内存)。
select:
1 默认支持监听数为1024。
2 两次轮询:内核在监听时对范围内的无论是否相关的fd都进行轮询处理,在用户态依然如此。
3 两次拷贝:内核在得到数据时进行一次拷贝,将其送至用户态时又进行一次拷贝。
epoll:
1 监听数量没有限制。
2 只在内核中对“感兴趣”的fd进行监听,用户态无需轮询处理。
3 一次拷贝:在内核中直接将数据拷贝到指定位置(内核与用户空间mmap一块内存)。
转载于:https://my.oschina.net/androidstudy/blog/113625