Книга: 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 }
Из этой реализации видно, что семафорами пользоваться проще, чем взаимными исключениями и условными переменными.
- Функция sem_wait
- Функция sem_unlink
- 2.1.3. Функция getopt_long()
- Группировка по встроенным функциям и UDF
- SEMAPHORE COUNT
- 19.1.1. Функция jQuery()
- Функция strcmp( )
- Управление функциями узла
- Функция программного обеспечения
- 3.2. Ключи типа key_t и функция ftok
- 9.10. Функция sctp_recvmsg
- Функция document