Книга: UNIX: взаимодействие процессов

Функция sem_wait

Функция sem_wait

Следующая функция приведена в листинге 10.42; она называется sem_wait и ожидает изменения значения семафора с нулевого на ненулевое, после чего уменьшает значение семафора на 1.

11-16 Мы вызываем semop с операцией, уменьшающей значение семафора на 1.

Листинг 10.42. Функция sem_wait

//my_pxsem_svsem/sem_wait.c
1  #include "unpipc.h"
2  #include "semaphore.h"
3  int
4  mysem_wait(mysem_t *sem)
5  {
6   struct sembuf op;
7   if (sem->sem_magic != SEM_MAGIC) {
8    errno = EINVAL;
9    return(-1);
10  }
11  op.sem_num = 0;
12  op.sem_op = –1;
13  op.sem_flg = 0;
14  if (semop(sem->sem_semid, &op, 1) < 0)
15   return(-1);
16  return(0);
17 }

Оглавление книги


Генерация: 0.199. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз