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

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);
}
dans semop (num_jeu_semaphore, operation, 1);

à quoi correspnd le 1 en dernier paramètre ?


Merci