Linux高并发之--select,poll,epoll
1. 三种方式的区别及总结参考:https://www.cnblogs.com/Anker/p/3265058.html
select连接数限制windows一般为64
2. 三种方式
2.1 select方式参考:https://www.cnblogs.com/Anker/p/3258674.html
2.2 poll方式参考: https://www.cnblogs.com/Anker/p/3261006.html
2.3 epoll方式参考:https://www.cnblogs.com/Anker/p/3263780.html
3. 要点总结
1.select 有1024限制,消息在内核态和用户态之间拷贝 数组结构
2.poll突破select的1024限制,消息在内核态和用户态之间拷贝 链式结构
3. epoll无1024限制,内核和用户共享一个区域, 红黑树
水平模式:当epoll_wait检测到描述符事件发生并将此事件通知应用程序,应用程序可以不立即处理该事件。下次调用epoll_wait时,会再次响应应用程序并通知此事件。
边缘模式:当epoll_wait检测到描述符事件发生并将此事件通知应用程序,应用程序必须立即处理该事件。如果不处理,下次调用epoll_wait时,不会再次响应应用程序并通知此事件。
ET模式在很大程度上减少了epoll事件被重复触发的次数,因此效率要比LT模式高。epoll工作在ET模式的时候,必须使用非阻塞套接口,以避免由于一个文件句柄的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死。
4. socket相关属性设置参见:https://www.cnblogs.com/baiduboy/p/8127913.html