Bonsoir,
J'apprend à synchroniser un processus pere avec un fils (le modele du producteur consommateur). J'utilise pour cela les sémaphores et je m'aide d'exemples sur le net.
à savoir que j'ai utilisé un seul jeu de sémaphore avec 1 seul sémpahore.
là ou j'ai du mal dans mon programme c'est au niveau de cette fonction
dans semop (num_jeu_semaphore, operation, 1);
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
25
26
27
28
29
30 /* -------------------------------------------------------------------------- operation_sur_semaphore () -------------------------------------------------------------------------- Role : permet d'effectuer une operation sur un semaphore (decrementation ou incrementation) Retourne 0 si succes, -1 sinon -------------------------------------------------------------------------- */ int operation_sur_semaphore (int num_jeu_semaphore, int valeur_operation) { /* On cree une structure sembuf qui nous permettra d'effectuer l'operation voulue sur le semaphore */ struct sembuf operation[1]; /* On choisi le semaphore sur lequel on desire effectuer l'operation */ /* Ici on travaille sur 1 seul semaphore (le semaphore n° 0) */ operation[0].sem_num = 0; /* on selectionne la valeur de l'operation a effectuer */ operation[0].sem_op = valeur_operation; /* On positionne le flag sur 0 : operation bloquante + SEM_UNDO : eviter l'interblocage */ operation[0].sem_flg = 0 | SEM_UNDO; /* La structure sembuf est correctement initialisee on fait appel a semop pour agir sur le sempahore correspondant */ return semop (num_jeu_semaphore, operation, 1); }
à quoi correspnd le 1 en dernier paramètre ?
Merci
Partager