網路程式設計 epoll反應堆簡單版

2021-08-09 14:51:11 字數 1482 閱讀 7898

//反應堆簡單版

#include #include #include #include #include #include #include #include #include #include #define _buf_len_ 1024

#define _event_size_ 1024

//全域性epoll樹的根

int gepfd = 0;

void readdata(int fd,int events,void *arg);

//事件驅動結構體

typedef struct xx_eventxevent;

xevent myevents[_event_size_];

//新增事件

void eventadd(int fd,int events,void (*call_back)(int ,int ,void *),void *arg,xevent *ev)

//修改事件

//eventset(fd,epollout,senddata,arg,ev);

void eventset(int fd,int events,void (*call_back)(int ,int ,void *),void *arg,xevent *ev)

//刪除事件

void eventdel(xevent *ev,int fd,int events)

//傳送資料

void senddata(int fd,int events,void *arg)

//讀資料

void readdata(int fd,int events,void *arg)

else if(ev->buflen == 0)

}//新連線處理

void initaccept(int fd,int events,void *arg)

}//設定讀事件

eventadd(cfd,epollin,readdata,&myevents[i],&myevents[i]);

}int main(int argc,char *argv)

listen(lfd,120);

gepfd = epoll_create(1024);

printf("gepfd === %d\n",gepfd);

struct epoll_event events[1024];

//新增最初始事件,將偵聽的描述符上樹

eventadd(lfd,epollin,initaccept,&myevents[_event_size_-1],&myevents[_event_size_-1]);

//void eventadd(int fd,int events,void (*call_back)(int ,int ,void *),void *arg,xevent *ev)

while(1)}}

// sleep(1);

}return 0;

}

epoll反應堆模型

參考 參考 求職期間,還是得好好學習。看了大概的思路,自己理解著敲一下。和原來 的有些地方不同。include include include include include include include include include define max events 1024 監聽上限 de...

epoll反應堆理解

反應堆伺服器 接收客戶端的資訊,然後傳送回去 監聽到事件才做對應的 函式,這是reactor乙個固定的正規化,不能太隨心所欲.當然可以在readdata裡write client fd 但不符合正規化.而且,回想一下epoll的作用 幫助程序監聽檔案描述符 是否可寫或可讀,只有epoll給你監聽到可...

epoll反應堆模型實現

在高併發tcp請求中,為了實現資源的節省,效率的提公升,epoll逐漸替代了之前的select和poll,它在使用者層上規避了忙輪詢這種效率不高的監聽方式,epoll的時間複雜度為o 1 也就意味著,epoll在高併發場景,隨著檔案描述符的增長,有良好的可擴充套件性。關鍵函式有三個 核心資料結構 t...