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时固定的,所以需要它去遍历

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

  • 相关阅读:
    html5-css渐变色
    html5-css综合练习
    html5-css背景
    html5-css边框全
    html5-css边框img
    进程控制(二)与linux下的自有服务
    进程检测与控制(一)
    权限及软件包管理
    linux下文件权限管理
    vim及用户组管理
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3371977.html
Copyright © 2011-2022 走看看