1、單獨起執行緒進行epoll時間的偵聽
2、接收到事件後的預處理
printerr(__file__,__line__);
handler->on_recv_and_send(socket_event_err,null,0);
m_cache.set_usedbuf(t_buf);
//close(event->data.fd);
return;
}if(0 == bytecount)
recv_count += bytecount;
}handler->on_recv_and_send(socket_event_recv,(char *)*t_buf,recv_count);
m_cache.set_usedbuf(t_buf);
}if(event->events & epollout)
handler->on_recv_and_send(socket_event_send,null,0);}}
}3、增加乙個檔案描述符到epfd中
handler->set_epoll(this);
arealock al(m_lockhandlers);
map::iterator iter = m_handlers.find(socketfd);
if(iter != m_handlers.end())
pairmypair(socketfd,handler);
m_handlers.insert(mypair);
if(0 != epoll_ctl(m_epollfd,epoll_ctl_add,socketfd,&epollevent))
return 0;
}(不知道重複增加會怎麼樣?)
4、修改乙個檔案描述符的偵聽事件
linux epoll 問題小結
1,server端的fd不需要設定et模式 我們在建立socket成功後會有個listenfd,listenfd socket af inet,sock stream,0 然後會把這個fd加入epoll wait佇列中,網上很多沒有經過驗證的 是這樣寫的 ev.data.fd listenfd ev...
linux epoll技術介紹
在linux的網路程式設計中,很長的時間都在使用select來做事件觸發。在linux新的核心中,有了一種替換它的機制,就是epoll。相比於select,epoll最大的好處在於它不會隨著監聽fd數目的增長而降低效率。因為在核心中的select實現中,它是採用輪詢來處理的,輪詢的fd數目越多,自然...
linux epoll 開發指南
原文 關於epoll的問題很早就像寫文章講講自己的看法,但是由於ffrpc一直沒有完工,所以也就拖下來了。epoll主要在伺服器程式設計中使用,本文主要 伺服器程式中epoll的使用技巧。epoll一般和非同步io結合使用,故本文討論基於以下應用場合 epoll是為非同步io操作而設計的,epoll...