Cuando se trata de paralelismo, la mayoría de los programadores recuerdan inmediatamente multihilo o asincronía. Pero Lua tiene su propia herramienta única: corrutinas. Le permiten escribir código como si tuviera varios hilos, mientras permanece dentro de un solo hilo de ejecución.
Las corrutinas son «flujos» ligeros, que se pueden pausar y reanudar manualmente.
A diferencia de las funciones convencionales que se ejecutan de principio a fin, una corutina puede:
detenerse en medio de la ejecución,
devolver el control al código de llamada,
y luego continuar el trabajo desde el mismo lugar.
Es como una pausa en el juego 🎮: guardaste el estado y luego continuaste con calma desde el mismo momento.

Ejemplo de corutina en Lua
function worker()
for i = 1, 3 do
print("Step " .. i)
coroutine.yield() -- приостанавливаемся
end
end
co = coroutine.create(worker)
coroutine.resume(co) --> Шаг 1
coroutine.resume(co) --> Шаг 2
coroutine.resume(co) --> Шаг 3
Análisis:
coroutine.create— crea una corutina.coroutine.resume— la inicia o la continúa.coroutine.yield— pausa la ejecución.
¿En qué se diferencian las corrutinas de los hilos?
Hilos (Threads) | Corrutinas (Coroutines) |
|---|---|
Gestionado por el sistema operativo | Gestionado por el propio Lua |
Se pueden realizar en paralelo | Se ejecutan solo uno tras otro |
Difícil de depurar | Sencillas y predecibles |
Requieren protección de datos (mutex, lock) | Son seguras, ya que no hay paralelismo real |
¿Dónde son útiles las cortinas?
Juegos y animaciones — secuencias de comandos paso a paso sin if anidados y temporizadores.
Tareas asíncronas — consultas de red, gestión de eventos.
Escenarios de secuencias de comandos — una descripción simple del comportamiento de los NPC o bots.
Un pequeño ejemplo para el juego
function npc()
print("NPC: I'm coming...")
coroutine.yield()
print("NPC: I stopped...")
coroutine.yield()
print("NPC: I'm coming again!")
end
co = coroutine.create(npc)
coroutine.resume(co) -- NPC: Я иду...
coroutine.resume(co) -- NPC: Я остановился...
coroutine.resume(co) -- NPC: Я снова иду!
En lugar de una lógica compleja, un guion simple, como si escribieras un miniteatro para objetos.
Total
Las corrutinas en Lua son no es multiproceso, sino una forma fácil de simular la ejecución paralela. Son ideales para juegos, aplicaciones de red y escenarios donde el control del orden de las acciones es importante.
Si estás aprendiendo Lua, asegúrate de jugar con las corrutinas. Esto puede simplificar enormemente su arquitectura. código cursos interesantes con tareas en Lua.
Y también tenemos un canal de telegram, donde discutimos ideas geniales, compartimos experiencias y analizamos juntos las tareas: aprender no solo es útil, sino también divertido.
