Gestion du multitâche coopératif par TIMER

Le multitâche coopératif c'est en quelque sorte le multitâche du pauvre!

 Pour que cela marche il est nécessaire de partieliser les tâches et que celles ci ne soient pas trôp longues pour donner l'illusion du multitâche, ici il n'y a rien pour saucissonner votre programme comme sur un multitâche préemptif (comme UNIX, Magic, Mint, Nextstep... Je ne parle pas volontairement de W95 ou W NT, qui si ils ont franchis le pas (c'est ce qu'ils prétendent), on se demande parfois si c'est tout a fait vrai, pas difficile de bloquer presque toutes les ressources systeme avec un seul programme même malgré le Pentium).

 Si on arrive à ainsi partielliser son programme, il n'y a malheureusement pas beaucoups de moyens pour contôler les intervalles de temps. Si on gère en même temps que le Timer les messages, demander l'évènement Timer dans evnt_multi() ne suffit pas, car vous risquez de ne jamais recevoir d'évènement Timer (au pire!), il suffit pour cela qu'un autre évènement tombe avant (si on demande 200ms et qu'il y a un message à 100ms quand on redemandera a nouveau 200ms, les 100ms déja passées ne seront pas comptées et on attendra de nouveau 200ms et ainsi de suite). Il faut donc concidérer pour chaque évènement le Timer, mais comme cette fois ci le nombre de cas risque d'être bien trop important face au besoin, il faut vérifier grâce aux divers compteurs système le temps écoulé et si le temps est atteint lancer la procédure que l'on veut déclencher sur l'évènement Timer.

Olivier Landemarre