Estoy tratando de entender qué es un bucle de eventos. A menudo, la explicación es que en un ciclo de eventos, haces algo hasta que se te notifica que ocurrió un evento. Luego manejas el evento y continúas haciendo lo que estabas haciendo antes.
Para asignar la definición anterior con un ejemplo. Tengo un servidor que 'escucha' en un bucle de eventos, y cuando se detecta una conexión de socket, los datos se leen y se muestran, después de lo cual el servidor reanuda / comienza a escuchar como lo hacía antes.
Sin embargo, este evento y el hecho de que nos notifiquen "solo así" son demasiado para mí. Puede decir: "No es 'así como' tiene que registrar un detector de eventos". Pero, ¿qué es un detector de eventos, pero una función que por alguna razón no está regresando? ¿Está en su propio bucle, a la espera de ser notificado cuando ocurre un evento? ¿Debería el oyente del evento también registrar un oyente del evento? ¿Dónde termina?
Los eventos son una buena abstracción con la que trabajar, sin embargo, solo una abstracción. Creo que al final, el sondeo es inevitable. Quizás no lo hagamos en nuestro código, pero los niveles inferiores (la implementación del lenguaje de programación o el sistema operativo) lo están haciendo por nosotros.
Básicamente, se reduce al siguiente pseudo código que se está ejecutando en un lugar lo suficientemente bajo como para que no resulte en una espera ocupada:
while(True):
do stuff
check if event has happened (poll)
do other stuff
Este es mi entendimiento de toda la idea, y me gustaría saber si esto es correcto. Estoy abierto a aceptar que toda la idea es fundamentalmente errónea, en cuyo caso me gustaría la explicación correcta.