Les tâches et les synchronisations

Ce programme présente l'usage des tâches et des synchronisations.

Le fichier source est ${UPS_HOME}/upssdk/demo/${UPS_LANGUAGE}/tache.upl.

Mode compilé

Commande de compilation

upscmp Source=tache.upl

Commande d'exécution

tache

Mode interprété

upssng Source=tache.upl

Fichier source

Source Composant "Exemple d'emploi des taches" Version 4.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.0);
Ecran.Ecrire("T1 (1) : C="+C);
S.Lacher();

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

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

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

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

S.Prendre(SynchronisationLectureExclusive);
Attendre(1.0);
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.0);
S.Lacher();

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

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

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

Si T1.EstSuspendue() Alors Sinon Fin Si

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

Résultat de l'exécution

TP (1) : C=coucou Debut de la tâche ExempleDeTache T1 (1) : C=coucou2 TP (2) : C=coucou2 T1 (2) : C=coucou3 TP (3) : C=coucou3 T1 (3) : C=coucou3 T1 (4) : C=coucou3 T1 (5) : C=coucou3 T1 (6) : C=coucou3 T1 est suspendue Je ne fais rien Je ne fais rien Je ne fais rien Je ne fais rien Je ne fais rien T1 est terminée Code retour de T1=1