Qu'est-ce qu'une coroutine ?
Fait partie de la section Logique et flux du Journey Lua de Coddy — leçon 48 sur 54.
Pensez à jouer à un jeu vidéo. Vous pouvez le mettre en pause à tout moment, aller faire autre chose, puis revenir pour reprendre exactement là où vous vous étiez arrêté. Les coroutines en Lua fonctionnent de manière similaire.
Une coroutine est comme une fonction spéciale qui peut s'interrompre au milieu de son exécution, puis reprendre plus tard exactement à cet endroit. Contrairement aux fonctions classiques qui s'exécutent du début à la fin sans s'arrêter, les coroutines vous permettent de contrôler le moment où elles s'interrompent et reprennent.
Cette capacité permet ce que l'on appelle le multitâche coopératif. Au lieu d'exécuter plusieurs tâches exactement en même temps, les coroutines vous permettent de basculer entre différentes tâches volontairement.
Une coroutine s'exécute pendant un moment, se met en pause, une autre prend le relais, et ainsi de suite. Chaque coroutine coopère en décidant quand redonner le contrôle.
Les coroutines sont utiles lorsque vous devez diviser des opérations de longue durée, gérer des systèmes au tour par tour ou créer des séquences qui doivent mémoriser leur état entre les appels. Dans les leçons à venir, vous apprendrez comment créer, mettre en pause et reprendre des coroutines en Lua.
Essayez vous-même
Cette leçon ne comprend pas de défi de code.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() vs. ipairs()Récapitulatif - Fiche de personnage2Plus de fonctions de la bibliothèque table
table.concat()Construction de table & unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des scores3Concepts avancés sur les fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu'est-ce qu'une closure ?Récapitulatif - Gestionnaire d'événements simple6Gestion des erreurs
La fonction error()Appels protégés avec pcall()Récapitulatif - Division sécurisée9Les coroutines pour débutants
Qu'est-ce qu'une coroutine ?coroutine create & resumePause avec coroutine.yield()resume & yieldVérifier l'état d'une coroutineRécapitulatif - Générateur de nombresRécapitulatif - Calcul vectoriel