sem_wait()

Ожидать на именованном или безымянном семафоре

Прототип:

#include <semaphore.h>
int sem_wait( sem_t *sem );

Аргументы:

sem
Указатель на объект sem_t.

Библиотека:

libc

Описание:

Функция sem_wait() уменьшает семафор, на который ссылается аргумент sem. Если значение семафора не превышает 0, то вызывающий поток блокируется, пока не сможет уменьшить счетчик или вызов не будет прерван сигналом.

Штатное разблокирование потока, вызвавшего sem_wait(), происходит при вызове sem_post() из другого потока.

Возвращаемое значение:

0
Семафор был успешно декрементирован.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EDEADLK
Обнаружено состояние взаимной блокировки.
EINVAL
Недопустимый дескриптор sem.
EINTR
Вызов прерван сигналом.

Классификация:

POSIX 1003.1 Semaphores

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

sem_destroy(), sem_init(), sem_post(), sem_trywait()




Предыдущий раздел: Описание API системной библиотеки