LT模式 ET模式

2021-09-25 23:54:32 字數 716 閱讀 9785

lt:在資料到達之後,無論程式是沒有接收,還是接收了,但沒有接收完,下一輪epoll_wait仍然會提醒應用程式該描述符上有資料,知道資料被接收完。

同一事件僅僅被觸發一次

#include#include#include#include#include#include#include#include#include#include#include#include#define size 100

void setnonblock(int fd)//將檔案描述符設定成非阻塞的

int create_socket()

void et(int fd,struct epoll_event event,int epollfd)

else if(event.events&epollin)

; int n=recv(fd,buff,5,0);

if(n<=0)

close(fd);

epoll_ctl(epollfd,epoll_ctl_del,fd,null);

}printf("%s",buff);

} printf("\n");

send(fd,"ok",2,0);

} else }

void deal_link(struct epoll_event events,int n,int sockfd,int epollfd)

{ int i=0;

for(;i注意:

epoll的ET模式和LT模式

查閱了一些資料,才知道常用的事件處理庫很多都選擇了 lt 模式,包括大家熟知的libevent和boost asio等,為什麼選擇lt呢?那就不得不從et的弊端的弊端說起。et模式下,當有事件發生時,系統只會通知你一次,也就是呼叫epoll wait 返回fd後,不管事件你處理與否,或者處理完全與否...

epoll的ET模式和LT模式

lt模式 epoll預設的工作模式。如果描述符上的事件就緒,但是它的資料沒有處理完,或者沒有處理 epoll下次會提醒他,讓他處理。換個說法,如果fd對應的緩衝區有資料,就會呼叫一次epoll wait,直到資料全部被處理完。et模式 如果描述符上的事件就緒,但是它的資料沒有處理完,或者沒有處理。e...

epoll的ET模式與LT模式

1 include wrap.h 2 include 3 include 4 define max event num 1024 5 define buff size 1067 void delfd int epollfd int fd 815 void addfd int epollfd int ...