Разблокировать один из потоков, блокированных на условной переменной
#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 системной библиотеки