epoll 由红黑树与链表组成
为什么不用Hash ,hash 数组太大时,会引发扩容,导致拷贝
epoll_create(int size) // 1~10000 一样的
epoll_ctrl(epfd , EPOLL_CTL_MOD ,fd ,event)
epoll_wait(epfd ,ioset ,length ,timeout)
while(1)
{
int nready = epoll_wait(efd ,ioset ,length ,timeout) ;
for( int i = 0 ; i <nready ; ++i)
{
if( ioset[i].events& EPOLL_IN)
{
recv(ioset[i].fd ,buffer ,length ,0)
parse(buffer ,length) ;
epool_ctl(efd ,EPOLL_CTL_MOD ,ioset[i].fd ,EPOLLOUT) ;
}
if( ioset[i].event &EPOLL_OUT)
{
send(ioset[i].fd ,buffer ,length ,0) ;
epool_ctl(efd ,EPOLL_CTL_MOD ,ioset[i].fd ,EPOLLIN) ;
}
}
}