zoukankan      html  css  js  c++  java
  • 我觉得epoll和select最大的区别

    最近在用epoll,网速资料很多,大家都说epoll和select的区别比较大,而且select要不停遍历所有的fd,效率要低,而且fd有限制。

    但是我认为二者最大的区别在于


    先看代码

      while (1)
        {
    nfds = epoll_wait(epfd, events, 20, 50000);
    cout << nfds <<endl;
    if(nfds == -1)
    {
    perror("epoll_wait");
    continue;
    }


    for(int i =0; i<nfds; i++)
    {
    if(events[i].events & EPOLLIN)
    {
    recv_data(events[i].data.fd);
    }
    }
        }


    epoll_wait返回nfds,是有事件的events的个数,在我的应用场景中一般都是0,难道在接下来的for循环中,由于nfds=1 而每次都只看events[0]事件吗,如果假设有20个事件,难道每次只看第一个吗。

    所以events数组一直时动态变化的,发生事件的fd排在前面几个,而在select中,fd时固定的,所以需要它去遍历

    因此我认为这才是二者最大的区别。

  • 相关阅读:
    flask1 + jinja2 day88
    linux9
    linux8 redis集群槽+docker
    dsadfa
    redis
    aaa
    a
    题目
    java对含有中文的字符串进行Unicode编码
    Java转Double类型经纬度为度分秒格式
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3371977.html
Copyright © 2011-2022 走看看