{}const=>[]async()letfn</>var
DéveloppementLua

Coroutines en Lua : comment écrire du code pas à pas sans multithreading

Analyser les coroutines dans Lua est un moyen facile de suspendre et de reprendre les fonctions. Idéal pour les jeux, les tâches réseau et le code asynchrone.

К

Kodik

Auteur

2 min de lecture

Quand il s'agit de parallélisme, la plupart des programmeurs se souviennent immédiatement multithreading ou asynchronismeMais Lua a son propre outil unique - corrutine. Ils vous permettent d'écrire du code comme si vous aviez plusieurs threads, tout en restant dans un seul thread d'exécution.

Les coroutines sont « flux » légersqui peuvent être suspendues et renouvelées manuellement.

Contrairement aux fonctions conventionnelles qui sont exécutées du début à la fin, une coroutine peut :

  • arrêter au milieu de l'exécution,

  • retourner le contrôle au code appelant,

  • puis continuer à travailler à partir du même endroit.

C'est comme une pause dans le jeu 🎮 : vous avez enregistré l'état, puis vous avez tranquillement continué à partir du même moment.

Exemple de coroutine 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

Analyse :

  • coroutine.create — crée une coroutine.

  • coroutine.resume - démarre ou continue.

  • coroutine.yield - met l'exécution en pause.

🔥 100 000+ étudiants déjà avec nous

Marre de lire la théorie ?
Il est temps de coder !

Kodik — une appli où tu apprends à coder par la pratique. Mentor IA, leçons interactives, projets réels.

🤖 IA 24/7
🎓 Certificats
💰 Gratuit
🚀 Commencer
Ont rejoint aujourd'hui

En quoi les coroutines diffèrent-elles des flux ?

Flux (Threads)

Coroutines

Gérés par le système d'exploitation

Gérés par Lua lui-même

Peut être effectué en parallèle

Exécutées seulement l'une après l'autre

Difficile à déboguer

Simples et prévisibles

Nécessite une protection des données (mutex, lock)

Sûr, car il n'y a pas de véritable parallélisme

Où les coroutines sont-elles utiles ?

  • Jeux et animations — scénarios étape par étape sans if et minuteries imbriqués.

  • Tâches asynchrones — requêtes réseau, traitement des événements.

  • Scénarios de script - une simple description du comportement des PNJ ou des bots.

Un petit exemple pour le jeu

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: Я снова иду!

Au lieu d'une logique complexe, un scénario simple, comme si vous écriviez un mini-théâtre pour les objets.

Total

Les coroutines en Lua sont pas multithread, mais un moyen simple d'imiter l'exécution parallèle. Ils sont parfaits pour les jeux, les applications réseau et les scénarios où le contrôle de l'ordre des actions est important.

Si vous apprenez Lua, assurez-vous de jouer avec les coroutines. Cela peut grandement simplifier votre architecture. code des cours intéressants avec des exercices sur Lua.

Et nous avons aussi un chaîne de télégram, où nous discutons d'idées intéressantes, partageons nos expériences et analysons ensemble les tâches, apprendre devient non seulement utile, mais aussi amusant.

🎯Arrête de reporter

Tu as aimé l'article ?
Place à la pratique !

Avec Kodik, tu ne lis pas seulement — tu codes immédiatement. Théorie + pratique = vraies compétences.

Pratique instantanée
🧠L'IA explique le code
🏆Certificat

Sans inscription • Sans carte