Linux Epoll簡單封裝

2021-05-25 13:30:25 字數 889 閱讀 6869

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...