Снять блокировку мьютекса
#include <sys/neutrino.h>int SyncMutexUnlock( sync_t *sync );int SyncMutexUnlock_r( sync_t *sync );
libc
Системные вызовы SyncMutexUnlock() и SyncMutexUnlock_r() разблокирует мьютекс sync, владельцем которого должен являться текущий поток. Если на мьютексе заблокированы другие потоки, поле owner структуры sync устанавливается в идентификатор наиболее приоритетного из ожидающих потоков, который при этом ждет дольше остальных. Также этот поток переводится в состояние READY с последующим переходом в состояние RUNNING. Если подходящих потоков не обнаружено, поле устанавливается в значение 0
.
Эти функции эквивалентны, за исключением способа информирования об ошибках.
Если приоритет потока-владельца был повышен в рамках протокола наследования приоритетов, то при успешном вызове SyncMutexUnlock() приоритет возвращается к исходному значению.
POSIX-функции pthread_mutex_lock() и pthread_mutex_unlock() работают быстрее, поскольку они не во всех случаях приводят к системному вызову. |
Данные вызовы не являются блокирующими.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
ЗОСРВ «Нейтрино»
sync_t, pthread_mutex_lock(), pthread_mutex_unlock(), SyncTypeCreate(), SyncMutexLock()
Предыдущий раздел: Описание API системной библиотеки