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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 tâches T1 (){ Pour tout le tableau1 P(Stableau1); tableau1 := données de 1 à 10; V(Stableau1); Fin pour. }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 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); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 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
Partager