¿Qué es una corrutina?
Parte de la sección Logic & Flow del Journey de Lua de Coddy — lección 48 de 54.
Piensa en jugar a un videojuego. Puedes pausarlo en cualquier momento, ir a hacer otra cosa y luego volver para reanudarlo exactamente donde lo dejaste. Las corrutinas en Lua funcionan de manera similar.
Una corrutina es como una función especial que puede pausarse a sí misma en medio de la ejecución y luego continuar más tarde desde ese punto exacto. A diferencia de las funciones regulares que se ejecutan de principio a fin sin detenerse, las corrutinas te dan control sobre cuándo se pausan y se reanudan.
Esta capacidad permite algo llamado multitarea cooperativa. En lugar de ejecutar múltiples tareas exactamente al mismo tiempo, las corrutinas te permiten cambiar entre diferentes tareas de forma voluntaria.
Una corrutina se ejecuta durante un tiempo, se pausa a sí misma, otra toma el control, y así sucesivamente. Cada corrutina coopera decidiendo cuándo devolver el control.
Las corrutinas son útiles cuando necesitas dividir operaciones de larga duración, gestionar sistemas por turnos o crear secuencias que necesiten recordar su estado entre llamadas. En las próximas lecciones, aprenderás a crear, pausar y reanudar corrutinas en Lua.
Hoja de referencia
Una corrutina es una función especial que puede pausarse a sí misma durante la ejecución y reanudarse más tarde desde el mismo punto exacto, a diferencia de las funciones normales que se ejecutan de principio a fin sin detenerse.
Las corrutinas permiten la multitarea cooperativa, donde las tareas intercambian voluntariamente el control entre sí en lugar de ejecutarse simultáneamente. Una corrutina se ejecuta, se pausa, otra toma el control y el ciclo continúa.
Las corrutinas son útiles para dividir operaciones de larga duración, gestionar sistemas por turnos o crear secuencias que necesitan recordar su estado entre llamadas.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Iteración avanzada de tablas
Iterar con pairs()Iterar con ipairs()pairs() vs. ipairs()Resumen - Ficha de personaje2Más funciones de la librería table
table.concat()Construcción de tablas y unpack()table.sort()Ordenamiento personalizado con funcionesRepaso - Tabla de puntuaciones altas3Conceptos avanzados de funciones
Retorno de múltiples valoresFunciones variádicas (...)Funciones como valores de primera claseFunciones anónimas¿Qué es un Closure?Resumen - Manejador de eventos simple9Corrutinas para principiantes
¿Qué es una corrutina?coroutine create y resumePausar con coroutine.yield()resume y yieldComprobar el estado de la corrutinaResumen - Generador de númerosResumen - Matemática de vectores