El Concepto del Event Loop en Programación de Bajo Nivel
Cuando desarrollamos sistemas a bajo nivel que necesitan reaccionar a eventos impredecibles, es fundamental comprender el concepto de programación orientada a eventos.
Ejemplo de un Evento Impredecible
Imaginemos que nos conectamos a una red Wi-Fi. Desde que iniciamos la conexión hasta que recibimos la confirmación, puede pasar un tiempo desconocido, e incluso, la conexión podría no concretarse nunca.
Dado que estos eventos no pueden predecirse con exactitud, es necesario implementar un sistema de eventos, el cual organiza y gestiona estas situaciones.
¿Qué es el Event Loop?
El Event Loop es una estrategia utilizada en diferentes sistemas para manejar eventos de forma ordenada y eficiente. Se encarga de esperar continuamente la llegada de eventos y procesarlos en el orden en que se reciben.
Ejemplos de eventos en diferentes sistemas:
- Páginas web: No sabemos en qué momento el usuario hará clic o tocará la pantalla.
- Redes Wi-Fi: No podemos predecir cuándo un dispositivo se conectará o desconectará.
- Servidores: No sabemos en qué momento un cliente realizará una solicitud de información.
Para gestionar estos eventos, el Event Loop opera de la siguiente manera:
- Un emisor genera un evento, que puede ser de distintos tipos:
- "Nueva conexión" (ejemplo: un dispositivo se conecta a Wi-Fi).
- "Desconexión" (ejemplo: un usuario abandona la página web).
- "Clic" (ejemplo: un usuario presiona un botón en la interfaz).
- "Petición al servidor" (ejemplo: un navegador solicita una página web).
- El evento contiene información relevante, como qué dispositivo se desconectó o qué usuario hizo la solicitud.
- El evento se agrega a la "cola de eventos", una estructura FIFO (First In, First Out, es decir, "primero en entrar, primero en salir").
- El Event Loop revisa la cola de eventos y, uno por uno, los envía al manejador de eventos adecuado.
- El manejador procesa el evento y ejecuta la acción correspondiente.
Ventajas del Event Loop
- Permite desarrollar aplicaciones asíncronas, es decir, que pueden responder a eventos sin bloquear otras operaciones.
- Organiza el flujo de trabajo de manera más estructurada.
- Es una técnica ampliamente utilizada en diversos lenguajes de programación.
En el caso del ESP32, el SDK oficial incorpora un Event Loop, asegurando una gestión eficiente de los eventos en este entorno de desarrollo.