Разблокировать один из потоков, блокированных на условной переменной
#include <sys/neutrino.h>int SyncCondvarSignal( sync_t *sync,int broadcast );int SyncCondvarSignal_r( sync_t *sync,int broadcast );
PTHREAD_COND_INITIALIZER
.0
, если требуется разблокировать один поток с наивысшим приоритетом, который ожидает дольше других. Иное значение, если разблокировать требуется все ожидающие потоки.libc
Системные вызовы SyncCondvarSignal() и SyncCondvarSignal_r() разблокируют один или несколько потоков, ожидающих на объекте синхронизации sync. Эти функции эквивалентны, за исключением способа информирования об ошибках.
Вместо явного использования данных системных вызовов следует рассмотреть возможность использования функций pthread_cond_broadcast() и pthread_cond_signal(). |
В любом случае, каждый разблокированный поток будет пытаться захватить контролирующий мьютекс, заданный при вызове SyncCondvarWait(), причем выполняться это будет перед возвращением управления в поток. если мьютекс уже заблокирован, то происходит блокирование уже на мьютексе.
Данные вызовы не являются блокирующими.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
ЗОСРВ «Нейтрино»
sync_t, pthread_cond_broadcast(), pthread_cond_signal(), pthread_cond_wait(), pthread_cond_wait_interruptible(), SyncCondvarWait()
Предыдущий раздел: Описание API системной библиотеки