Synchronisation de tâches (sémaphores)

Fermé
JustMed - 11 mai 2012 à 16:51
Bonjour à tous,

Je dois coder un petit programme ayant les consignes suivantes :

Réalisez la synchronisation de ces 3 tâches :

Tâche T1 : doit créer un tableau n°1 de données (random de int de 1 à 10) et s'endort 100ms
Tâche T2 : lit le tableau n°1, en récupérant que les données int <5 et les recopie dans un autre tableau n°2 . Puis elle s'endort 200ms.
Tâche T3 : affiche le tableau 2 à l'écran quand la tâche T2 a terminé.

Donc j'en déduis que l'on doit recevoir des données avec T1 avant de pouvoir lancer T2.

Je pense réaliser cette synchronisation qu'avec 3 sémaphores :

Semaphore Stableau1, Stableau2 : qui protègent en mutex les tableaux 1 et 2
Semaphore Safficher : qui lance l'affichage que si T2 est fini.


tâches T1 (){

Pour tout le tableau1
P(Stableau1);
tableau1 := données de 1 à 10;
V(Stableau1);
Fin pour.
}


tâches T2 (){

P(Stableau2);
P(Stableau1);

Pour tout le tableau 2
tableau2 := les données du tableau1 qui sont < à 5
Fin pour.

V(Stableau2);
V(Stableau1);

}


tâches T3 (){

P(Safficher);
P(Stableau2);

Pour tout le tableau 2
tableau2 := les données du tableau1 qui sont < à 5
Fin pour.

V(Safficher);
V(Stableau2);

}


Que pensez-vous de mon raisonnement ? Est ce que j'utilise correctement les sémaphores ? Est ce qu'il n'y aura pas des problèmes car T1 et T2 s'endorment ?

Merci de votre aide :)