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 ?