Les tâches et les synchronisations

Commande de compilation...
Commande d'exécution...
Fichier source...

upscmp Source=tache.upl

Revenir en haut de la page...

tache

Revenir en haut de la page...

Source Composant "Exemple d'emploi des taches" Version 1.0.0;

Variable
/******/ Fonction PrincipalT1(T : Nul Ou Tache) Retourner Entier
/***************************************************/
Debut
Ecran.Ecrire("Debut de la tâche "+T.NomTache);

S.Prendre(SynchronisationLecturePartagee);
Attendre(1);
Ecran.Ecrire("T1 (1) : C="+C);
S.Lacher();

S.Prendre(SynchronisationLecturePartagee);
Attendre(1);
Ecran.Ecrire("T1 (2) : C="+C);
S.Lacher();

S.Prendre(SynchronisationLecturePartagee);
Attendre(1);
Ecran.Ecrire("T1 (3) : C="+C);
S.Lacher();

S.Prendre(SynchronisationLectureExclusive);
Attendre(1);
Ecran.Ecrire("T1 (4) : C="+C);
S.Lacher();

S.Prendre(SynchronisationLectureExclusive);
Attendre(1);
Ecran.Ecrire("T1 (5) : C="+C);
S.Lacher();

S.Prendre(SynchronisationLectureExclusive);
Attendre(1);
Ecran.Ecrire("T1 (6) : C="+C);
S.Lacher();

T.SuspendreTache();

TantQue Vrai Faire Fin TantQue
Fin Fonction

Principal
/*******/
Debut
S=Synchronisation("ExempleDeSynchronisation", SynchronisationPrivee);
S.Prendre(SynchronisationEcritureExclusive);
T1=Tache("ExempleDeTache", PrincipalT1, Faux);

C="coucou";
Ecran.Ecrire("TP (1) : C="+C);
Attendre(5);
S.Lacher();

S.Prendre(SynchronisationEcriturePartagee);
Attendre(1);
C="coucou2";
Ecran.Ecrire("TP (2) : C="+C);
S.Lacher();

S.Prendre(SynchronisationEcriturePartagee);
Attendre(1);
C="coucou3";
Ecran.Ecrire("TP (3) : C="+C);
S.Lacher();

S.Prendre(SynchronisationEcriturePartagee);
Attendre(1);
S.Lacher();

Si T1.EstSuspendue() Alors Sinon Fin Si
T1.ReprendreTache();

Attendre(5);
T1.ArreterTache(1);
Si T1.EstTerminee Alors Fin Si Ecran.Ecrire("Code retour de T1="+Caractere(T1.CodeRetour));
T1=Nul;
Fin Principal

Revenir en haut de la page...