epoll及高并发服务器详解

重要函数API

  • [ epoll_create ]
#include<sys/epoll.h>
int epoll_create(int size)       //创建一个epoll文件描述符,size是监听个数

epoll_create是创建一个存储文件描述符的红黑树,返回这颗红黑树的树根epfd。

  • [ epoll_ctl ]
int epoll_ctl(int epfd,          //epoll_create返回的文件描述符
              int op,            //三个选项,EPOLL_CTL_ADD,EPOLLCTL_MOD,EPOLL_CTR_DEL
              int fd,            //文件描述符,某个节点
              struct epoll_event *event) //epoll事件,取地址

其中的struct epoll_event形式如下:

typedef union epoll_data
{
    void *ptr;
    int fd;             //这个fd就是epoll_ctl中需要的fd
    uint32_t u32;
    uint64_t u64;
}epoll_data_t;

struct epoll_event
{
    uint32_t events;     //EPOLLIN,EPOLLOUT,EPOLLERR
    epoll_data_t data    //用户数据
}
  • [ epoll_wait ]
int epoll_wait(int epfd,                   
               struct epoll_event *event,   //就绪事件数组,是个传出参数
               int maxevents,   //告知内核evenet数组的容量,maxevnets的值不能大于epoll_create的size
               int timeout)    //-1阻塞,0立即返回,>0指定毫秒  
//成功返回就绪的文件描述符数量,时间到了返回0,出错返回-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值