zoukankan      html  css  js  c++  java
  • 使用epoll&socket的总结

    1. epoll 中使用et方式触发,只需EPOLL_CTL_ADD一次,把EPOLLIN  EPOLLOUT 事件全注册,每个socket只需创建add一次,其事件就会

         一直在epoll中,当然,socketclose 后应DEL掉。

    2. ET触发方式是指当fd到状态发生变化时通知,如read buffer从无到有,write buffer从满到不满才会通知。

    3. 若要将accept的文件描述符添加到epoll,那么同样需要将socket设置为nonblock,调用accept时要循环读,直到EWOULDBLOCK发生。

    4. socket 无论是read/write事件,均需要循环读,知道EWOULDBLOCK发生。

    5. accept 触发too many open file 时,accept到buffer已满,若close掉一些socket,仍然不能接受新连接,参见第2条,所以需要调用EPOLL_CTL_MOD重新触发accept事件,还一个简单方案,监听用到fd注册epoll是使用LT触发。

    示例代码:

    https://ffown.googlecode.com/svn/trunk

  • 相关阅读:
    递归
    排序算法的稳定性与复杂度总结
    二分查找
    希尔排序
    快速排序
    归并排序
    插入排序
    选择排序
    冒泡排序
    i2c_smbs 函数
  • 原文地址:https://www.cnblogs.com/zhiranok/p/epoll_socket.html
Copyright © 2011-2022 走看看