使用epoll 單執行緒監聽 資料接收效率的問題。
int epoll_fd;
int socktfd = socket(...)
listen(sockfd,...)
bind(sockfd,...)
epoll_fd=epoll_create(MAX_EVENTS);//創建一個epoll句柄
//
//add server socket fd into epoll system
//
epoll_ctl(epoll_fd,EPOLL_CTL_ADD,server_sockfd, ..)
for( ; ;) {
//
//wait fd set data in or out
//
nfds=epoll_wait(epoll_fd,events,MAX_EVENTS,-1);
for( int i =0 ; i< nfds ; i++) {
if(events[i].data.fd== server_sockfd) {
///accpet one client
// and add to epoll system
accpetAndAdEpollSys();
}
else {
///recv data from client
recv (......);
//
//handler client message data
//
messageHandler(...........);
}
}
}
想問一下如果并發量很大的話,recv是否接收的過來?是否可以用多執行緒來接收呢?還是怎么處理?
uj5u.com熱心網友回復:
或者不那么絕對做多執行緒,可以約束一下條件,比如一個執行緒管理多少個客戶端,分組管理客戶端。轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/123577.html
標籤:應用程序開發區
下一篇:關于訊息佇列求助
