使用:http://blog.chinaunix.net/uid-20384806-id-1954307.html
优点:http://blog.csdn.net/wangpengqi/article/details/9933011
源码分析 http://blog.csdn.net/chen19870707/article/details/42525887
int epoll_create(int size);创建一个epoll的句柄,size用来告诉内核需要建通的数目一共有多大,epoll句柄会占用一个fd值。
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
epoll的事件注册函数,第一个参数是创建的epoll句柄,第二个参数表示动作:
EPOLL_CTL_ADD 注册新的fd到epfd中
EPOLL_CTL_MOD 修改已经注册的fd的监听事件
EPOLL_CTL_DEL 从epfd中删除一个fd
第三个参数是需要监听的fd,第四个参数是告诉内核需要监听什么事
struct epoll_event {
_unit32_t events;
epoll_data_t data;
}
events可以是一下几个宏的组合
EPOLLOIN 表示对应的文件描述符可以读,包括对端的socket正常关闭
EPOLLOUT 可写
EPOLLPRI 有紧急的数据可读
EPOLLERR 发生错误
EPOLLHUP 被挂断
EPOLLET 将EPOLL设为边缘触发,这是相对于水平触发来说的
EPOLLONESHOT 只监听一次事件,完了还还需要监听这个fd的话需要重新加入到EPOLL队列里
epoll_data_t data是一个结构体,里面包含了fd。
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
参数events用来从内核得到事件的集合,maxevents告知内核这个events有多大,timeout可以设超时毫秒或立即返回或阻塞,
该函数返回要处理的事件数目,或者超时无事件0。
水平触发:LT,默认工作方式,同时支持block和non-block socket,内核通知就绪以后如果不对就绪的fd进行IO操作,内核还是会继续通知你。
边缘触发:ET,高速工作方式,只支持non-block socket,当描述符从未就绪变为就绪时&#x
优点:http://blog.csdn.net/wangpengqi/article/details/9933011
源码分析 http://blog.csdn.net/chen19870707/article/details/42525887
int epoll_create(int size);创建一个epoll的句柄,size用来告诉内核需要建通的数目一共有多大,epoll句柄会占用一个fd值。
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
epoll的事件注册函数,第一个参数是创建的epoll句柄,第二个参数表示动作:
EPOLL_CTL_ADD 注册新的fd到epfd中
EPOLL_CTL_MOD 修改已经注册的fd的监听事件
EPOLL_CTL_DEL 从epfd中删除一个fd
第三个参数是需要监听的fd,第四个参数是告诉内核需要监听什么事
struct epoll_event {
_unit32_t events;
epoll_data_t data;
}
events可以是一下几个宏的组合
EPOLLOIN 表示对应的文件描述符可以读,包括对端的socket正常关闭
EPOLLOUT 可写
EPOLLPRI 有紧急的数据可读
EPOLLERR 发生错误
EPOLLHUP 被挂断
EPOLLET 将EPOLL设为边缘触发,这是相对于水平触发来说的
EPOLLONESHOT 只监听一次事件,完了还还需要监听这个fd的话需要重新加入到EPOLL队列里
epoll_data_t data是一个结构体,里面包含了fd。
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
参数events用来从内核得到事件的集合,maxevents告知内核这个events有多大,timeout可以设超时毫秒或立即返回或阻塞,
该函数返回要处理的事件数目,或者超时无事件0。
水平触发:LT,默认工作方式,同时支持block和non-block socket,内核通知就绪以后如果不对就绪的fd进行IO操作,内核还是会继续通知你。
边缘触发:ET,高速工作方式,只支持non-block socket,当描述符从未就绪变为就绪时&#x