1.epoll函数
#include <sys/epoll.h>
int epoll_creat(int size);
int epoll_creat1(int flags); //创建一个epoll头文件描述符
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
typedef union epoll_data{
void *ptr;
int fd;
unit32_t u32;
unit64_t u64;
} epoll_data_t;
struct epoll_event{
unit32_t events;
epoll_data_t data;
}
1.1 epoll LT
1.2 epoll ET
2. LT与ET详解
EPOLLIN事件:
内核中的socket接收缓冲区 为空 低电平
内核中的socket接收缓冲区 不为空 高电平
EPOLLOUT事件:
内核中的socket发送缓冲区 不满 高电平
内核中的socket发送缓冲区 满 低电平
-
LT 电平触发
高电平 -
ET 边沿触发
低电平->高电平
高电平->低电平
3. select、poll和epoll