Describa brevemente el tiempo de activación de EPOLLOUT y EPOLLIN en modo Linux Epoll ET

El modo ET se denomina modo de disparo por borde y, como su nombre lo indica, no se activará a menos que sea en un caso de borde.

Evento EPOLLOUT:
El evento EPOLLOUT solo se activa una vez al conectarse, lo que indica que se puede escribir. Si desea activarlo en otros momentos, primero debe preparar las siguientes condiciones: 1.
Cierta escritura, el búfer de envío está lleno y el código de error de retorno es EAGAIN.
2. El par lee algunos datos y se puede escribir de nuevo. En este momento, se activará EPOLLOUT.
En pocas palabras: el evento EPOLLOUT solo se activará una vez en el momento de la transición de no grabable a grabable, por lo que se llama activador de borde, ¡lo cual es correcto!

De hecho, si realmente desea forzar un disparador una vez, hay una manera. Simplemente llame a epoll_ctl para restablecer el evento. El evento es exactamente igual que la configuración original (pero debe incluir EPOLLOUT). La clave es restablecer y activará inmediatamente un evento EPOLLOUT.

Evento EPOLLIN:
El evento EPOLLIN solo se activará cuando haya datos escritos en el otro extremo, por lo que después de activarse una vez, es necesario leer continuamente todos los datos hasta que se lea EAGAIN. De lo contrario, los datos restantes solo se pueden sacar juntos cuando el extremo del par escribe la próxima vez.
Ahora comprenda por qué epoll debe requerir un socket asíncrono. Si el socket está sincronizado y se requiere leer todos los datos, eventualmente se bloqueará en el bloque.

Supongo que te gusta

Origin blog.csdn.net/psq1508690245/article/details/118052554
Recomendado
Clasificación