1、epoll如何用的
int epfd= epoll_create(1);//创建红黑树根节点
struct epoll_event ev,events[1024]={0};
ev.event = EPOLLIN;
ev.data.fd = sockfd;
epoll_ctl(epfd,EPOLL_CTL_ADD,sockfd,&ev);//将绑定的scoketfd添加到前面创建的epoll红黑树中
while(1)
{
int nread = epoll_wait(epfd,events,1024,-1);
/*等待接受数据,events带出所有需要处理的fd,*/
/*参数-1表示有数据就触发返回,返回的nread表示有多少个需要处理的fd,*/
/*即events数组中有多少个需要处理的fd,*/
/*参数1024表示epoll能一次性能处理的fd是多少 */
/*fd类型有两种,一种是accept、另一种是recv/send */
if(nread < -1) break;
int i = 0;
for (i = 0; i< nready; i++)
{
struct sockaddr_in client_addr;
memset();
}
}
2、epoll的et与lt
et: 边沿触发,关键字触发一次 ,recv buff没有数据变成有数据这个过程触发一次,或者有数据时只触发一次,小块数据使用,et+循环 多次性读完
lt:水平触发,关键字有数据触发多次, recv buff有数据一直触发直到buff数据读完,大块数据使用,lt+一次性读完,监听fd适合lt
3、reactor反应堆,epoll
4、proactor