epoll有两种工作模式:水平触发模式(LT)和边沿触发模式(ET)。默认情况下,epoll采用LT模式工作,这时可以处理阻塞和非阻塞套接字,EPOLLET表示可以将一个事件改为ET模式。ET模式的效率比LT模式要高,它只支持非阻塞套接字。ET模式与LT模式的区别在于,当一个新的事件到来时,ET模式下可以从epoll_wait调用中获取到这个事件,可是如果这次没有把这个事件对应的套接字缓冲区处理完,在这个套接字没有新的事件再次到来时,在ET模式下是无法再次从epoll_wait调用中获取这个事件的;而LT模式则相反,只要一个事件对应的套接字缓冲区还有数据,每次epoll_wait都会获取这个事件。因此,在LT模式下开发基于epoll的应用要简单一些,不太容易出错,而在ET模式下事件发生时,如果没有彻底地将缓冲区数据处理完,则会导致缓冲区中的用户请求得不到响应。
阅读(1458) | 评论(0) | 转发(0) |