Tutoriel coroutines

Page principale

Répondre à ce message
Auteur: Frédéric
Date:  
À: Guilde
Sujet: Tutoriel coroutines
Hello,

Quelqu'un aurait-il un bon tutoriel (de préférence en français mais pas
obligatoirement) sur le concept des coroutines ?

Je me suis remis à la programmation assembleur Z80 en faisant un reboot
du jeu d'aventures que j'avais développé (et commercialisé) au début des
années 90, sur Amstrad CPC.

Dans ce jeu, il y a un timing serré à respecter sur une frame. J'ai déjà
implémenté une FSM pour passer d'une routine à une autre, ne pouvant pas
tout faire en même temps dans une même frame : refresh écran, update
musique, lecture clavier, gestion curseur, affichage texte, moteur du
jeu lui-même... Mais certaines de ces taches, comme l'affichage texte, ne
peuvent pas se faire en une seule fois, il faut que je divise encore, par
exemple en affichant caractère par caractère.

Du coup, je pense que la fonction 'print' se prêterait bien aux
coroutines : à la fin de chaque caractère affiché, je rend la main à la
boucle principale, et je continue où j'en étais à l'appel suivant.

Surtout que j'avais aussi écrit un micro-noyau multitaches préemptif pour
Z80 : c'est une bonne base de départ, puisqu'il y a tout ce qu'il faut
pour la sauvegarde de contexte et la commutation de tache :

https://rasmlive.amstrad.info/edit/XkiiPiGGBasyypKTc

Mais j'aimerais avoir une bonne idée du fonctionnement des coroutines pour
implémenter ça proprement (même si c'est juste partiellement dans un
premier temps, car du fait de la FSM, je n'aurai pas nécessairement besoin
de coroutines concurrentes)...

Merci d'avance.

-- 
    Frédéric