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
|
int binary_semaphore_wait (int semid)
{
struct sembuf operations[1];
/* Utilise le premier (et unique) sémaphore. */
operations[0].sem_num = 0;
/* Décrémente d'une unité. */
operations[0].sem_op = -1;
/* Autorise l'annulation. */
operations[0].sem_flg = SEM_UNDO;
return semop (semid, operations, 1);
}
/* Envoie un signal de réveil à un sémaphore binaire : incrémente sa valeur
d'une unité. Sort de la fonction immédiatement. */
int binary_semaphore_post (int semid)
{
struct sembuf operations[1];
/* Utilise le premier (et unique) sémaphore. */
operations[0].sem_num = 0;
/* Incrémente d'une unité. */
operations[0].sem_op = 1;
/* Autorise l'annulation. */
operations[0].sem_flg = SEM_UNDO;
return semop (semid, operations, 1);
} |
Partager