Ожидать на семафоре
#include <sys/neutrino.h>int SyncSemWait( sync_t *sync,int try );int SyncSemWait_r( sync_t *sync,int try );
libc
Системные вызовы SyncSemWait() и SyncSemWait_r() декрементируют семафор sync. Если значение семафора не превышает 0
и try равно 0
, то вызывающий поток блокируется до тех пор, пока он не сможет декрементировать счетчик или вызов не будет прерван сигналом.
Эти функции эквивалентны, за исключением способа информирования об ошибках.
Вместо явного использования системных вызовов следует рассмотреть функции sem_timedwait(), sem_trywait() или sem_wait(). |
Если try не равно 0
, функция функционирует в логике условного ожидания: если вызов должен приводить к блокировке потока, то семафор не модифицируется и возвращается соответствующий код ошибки.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением (значение семафора успешно декрементировано).EOK
возвращается при успешном завершении (значение семафора успешно декрементировано). Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
0
. ЗОСРВ «Нейтрино»
sync_t, sem_destroy(), sem_init(), sem_post(), sem_timedwait(), sem_trywait(), sem_wait(), SyncDestroy(), SyncSemPost(), SyncTypeCreate()
Предыдущий раздел: Описание API системной библиотеки