Bucle d'esdeveniments és un mecanisme de control d'execució que espera esdeveniments o condicions d'activitat, determina quines operacions poden continuar i transfereix el control al codi corresponent. És habitual en sistemes de programació orientada a esdeveniments, interfícies gràfiques, servidors de xarxa i entorns de programació asíncrona.Matthew Fowler, Python Concurrency with asyncio, Manning, 2022, secció 1.7. En alguns contextos també rep el nom de bucle principal, bucle de missatges o, en anglès, event loop.
Funcionament En una forma simplificada, un bucle d'esdeveniments manté una cua o conjunt de fonts d'activitat. En cada iteració comprova si hi ha treball preparat, executa el codi que hi està associat i torna a esperar nous esdeveniments. Si no hi ha cap treball disponible, el bucle pot quedar en espera fins que expiri un temporitzador, arribi una notificació del sistema operatiu, hi hagi dades disponibles en un sòcol o s'afegeixi una nova tasca.
La documentació de GLib descriu aquest patró amb fases de preparació de fonts, espera o poll, comprovació i despatx de callbacks.«Main Contexts», GNOME Developer Documentation, consulta 27 abril 2026, https://developer.gnome.org/documentation/tutorials/main-contexts.html El codi invocat pel bucle s'ha d'executar durant un temps limitat; si una callback o una operació síncrona triga massa, el programa pot perdre capacitat de resposta.
Concurrència El bucle d'esdeveniments permet una forma de concurrència sense requerir necessàriament paral·lelisme. En un model d'un sol fil, diverses operacions poden estar pendents alhora, però el codi dels seus gestors s'executa d'un en un. La concurrència prové del fet que una tasca pot quedar suspesa mentre espera entrada/sortida, un temporitzador o una altra condició externa, i el bucle pot donar pas a una altra tasca preparada.Matthew Fowler, Python Concurrency with asyncio, Manning, 2022, capítol 14.
Aquest funcionament s'associa sovint amb la multitasca cooperativa, perquè les tasques cedeixen el control en punts explícits d'espera. També es relaciona amb la multiplexació d'E/S, que permet esperar simultàniament múltiples canals d'entrada/sortida sense bloquejar-se en un de sol.
Implementacions En Python, el mòdul asyncio situa el bucle d'esdeveniments al centre de les aplicacions asíncrones: executa tasques i callbacks, realitza operacions d'E/S de xarxa i pot gestionar subprocessos.«Event Loop», Python 3 Standard Library, consulta 27 abril 2026, https://docs.python.org/3/library/asyncio-eventloop.html En JavaScript, el model d'execució es basa en cues de treball; segons MDN, quan una acció asíncrona es completa, la callback corresponent s'afegeix a una cua i cada treball s'executa fins que la pila queda buida abans de passar al següent.«JavaScript execution model», MDN Web Docs, consulta 27 abril 2026, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Execution_model
Vegeu també Programació orientada a esdeveniments
Referències
Categoria:Estructures de control