epoll学习随笔

Posted ye雨寄北

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了epoll学习随笔相关的知识,希望对你有一定的参考价值。

int epoll_create(int size);// 创建epoll 实例
int epoll_ctl(int epfd,int op,int fd,struct epoll_event* event) // 

 op为枚举类型,可选择的参数有

EPOLL_CTL_ADD // register the target descriptor fd on epoll instance
EPOLL_CTL_MOD // change the event associated with the target file descriptor fd
EPOLL_CTL_DEL // remove the target file descriptor fd from epoll instance

 epoll_event 结构体成员

typedef union epoll_data {
    void *ptr;
    int fd;
    uint32_t u32;
    uint64_t u64;      
} epoll_data_t;

struct epoll_event {
    uint32_t events;
    epoll_data_t data;
};

 常用的event types:

EPOLLIN // the associated file is available for read operations;
EPOLLOUT // the associated file is available for write operations;
EPOLLERR // error condition happened on the associated file desciptor
EPOLLET // sets the edge triggered behavior for the associated file descriptor

 epoll_wait 函数

int epoll_wait(int epfd,struct epoll_event *events,int maxevents,int timeout);

 检测添加到epoll树上的节点是不是处于就绪状态,如果没有就绪的文件描述符会阻塞

如果有节点处于就绪状态,通过参数events 把对应的fd传出。

 

以上是关于epoll学习随笔的主要内容,如果未能解决你的问题,请参考以下文章

经济随笔

从聊天室代码看epoll的使用和对比

[网络编程]epoll的基础用法

epol学习笔记

epoll学习

epoll多路复用机制的学习