¿Qué es una corrutina?
Parte de la sección Lógica y flujo de control 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.
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 Lógica y flujo de control
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