Bonsoir, je rencontre quelques difficultés avec les sémaphores.
J'ai ce cas : nous avons N émetteurs, M récepteurs et une case pour déposer de l'information qui sera lue par les récepteurs simultanément.
J'ai le programme suivant mais qui ne fait pas de la lecture simultanée (d'après mes tests sur feuille) :
Créer un tableau de sémaphores qui bloquent les récepteurs s'il n'y a rien à recevoir permet-il de faire de la lecture simultanée ? Si oui, comment mettre mon tableau dans la fonction sémaphore ? Un tant que toutes les cases sont différentes de 0 suffit ? Merci de m'éclairer
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
16
17
18
19
20
21
22
23
24 /* fonction EMETTEUR */ void ecrivain() { P(SEMPROD); printf("Mwahahahahahahhah\n"); sp->a ++; V(SEMCONS); } /************************************************************/ /* fonction RECEPTEUR */ void lecteur () { P(SEMCOUNT); sp->access_count ++; if(sp->access_count == 1) P(SEMCONS); V(SEMCOUNT); printf("%d valeur a: %d \n",sp-> access_count, sp->a); P(SEMCOUNT); if(sp->access_count == NR){ sp-> access_count = 0; V(SEMPROD); } V(SEMCOUNT); }
Partager