每次EPOLLIN事件都会带一次EPOLLOUT事件
我注册事件有:EPOLLIN | EPOLLOUT | EPOLLET | EPOLLRDHUP
ET模型下不是缓冲区由写变为不可写的时候EPOLLOUT才返回吗?我这个写不是总是返回的,而是有EPOLLIN 的时候才会带一次。man手册里面这样说 When used as an edge-triggered interface, for performance reasons, it is possible to add the file descriptor inside the epoll inter‐face (EPOLL_CTL_ADD) once by specifying (EPOLLIN|EPOLLOUT). This allows you to avoid continuously switching between EPOLLIN and EPOLLOUT calling epoll_ctl(2) with EPOLL_CTL_MOD. 实际跑过,没有遇到你说的可读时也有OUT事件的产生。在注册上之后,产生了一次EPOLLOUT,之后,只有当不可写变为可写时,才产生EPOLLOUT。我这边实际当中还未遇到发不出去而需要EPOLLOUT的情形。通常是我要主动去发,才MOD EPOLLOUT,主动触发,然后去send/write。
这个问题都话最好取看man手册,
|