epoll的两种工作模式
时间: 2024-01-24 11:37:26 浏览: 96
selet-poll-epoll三种模式的简介与比较
epoll是Linux系统提供的一种I/O多路复用机制,它有两种工作模式:LT(Level Triggered)模式和ET(Edge Triggered)模式。
1. LT(Level Triggered)模式:
在LT模式下,当某个文件描述符就绪时,epoll_wait会立即返回,并告诉用户进程文件描述符可读或可写。如果用户进程没有对该文件描述符进行读写操作,那么每次调用epoll_wait时都会返回该文件描述符,直到用户进程对其进行读写操作。
2. ET(Edge Triggered)模式:
在ET模式下,当某个文件描述符就绪时,epoll_wait仅在该文件描述符状态发生变化时才会返回。换句话说,只有当文件描述符从未就绪变为就绪时,epoll_wait才会返回就绪事件,而不是每次都返回该文件描述符。
需要注意的是,在ET模式下,为了确保不丢失事件,用户进程需要将文件描述符设置为非阻塞模式,并使用循环来读取所有就绪事件,直到epoll_wait返回0。同时,在ET模式下,epoll_wait只能与边缘触发的IO函数(如recv、send等)一起使用,否则可能会导致事件丢失。
阅读全文