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

Функция sem_getvalue

Функция sem_getvalue

В листинге 10.35 приведен текст последней функции в этой реализации — sem_getvalue. Она возвращает текущее значение семафора.

11-16 Мы блокируем соответствующее взаимное исключение и считываем значение семафора.

Листинг 10.35. Функция sem_getvalue

//my_pxsem_mmap/sem_getvalue.c
1  #include "unpipc.h"
2  #include "semaphore.h"
3  int
4  mysem_getvalue(mysem_t *sem, int *pvalue)
5  {
6   int n;
7   if (sem->sem_magic != SEM_MAGIC) {
8    errno = EINVAL;
9    return(-1);
10  }
11  if ((n = pthread_mutex_lock(&sem->sem_mutex)) != 0) {
12   errno = n;
13   return(-1);
14  }
15  *pvalue = sem->sem_count;
16  pthread_mutex_unlock(&sem->sem_mutex);
17  return(0);
18 }

Из этой реализации видно, что семафорами пользоваться проще, чем взаимными исключениями и условными переменными.

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


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