SyncDestroy(), SyncDestroy_r()

Уничтожить объект синхронизации


Note: Не используйте системные вызовы SyncDestroy() и SyncDestroy_r() явно; вместо этого следует использовать POSIX-функции:

Прототип:

#include <sys/neutrino.h>
int SyncDestroy( sync_t *sync );
int SyncDestroy_r ( sync_t *sync );

Аргументы:

sync
Уничтожаемый объект синхронизации sync_t.

Библиотека:

libc

Описание:

Системные вызовы SyncDestroy() и SyncDestroy_r() уничтожают ранее созданный объект синхронизации (см. SyncTypeCreate()). Если объект синхронизации сейчас заблокирован или на условной переменной ожидают потоки, данный вызов завершится с ошибкой.

Любые попытки использования sync после его удаления будут приводить к ошибкам.

Эти функции эквивалентны, за исключением способа информирования об ошибках.

Состояния блокировки:

Данные вызовы не являются блокирующими.

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

SyncDestroy()
Если возникла ошибка функция возвращает -1, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.
SyncDestroy_r()
EOK возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.

Коды ошибок:

EBUSY
Объект синхронизации заблокирован (используется) потоком.
EFAULT
Возникла ошибка при доступе ядра к объекту sync.
EINVAL
Объект синхронизации sync не существует.

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

ЗОСРВ «Нейтрино»

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

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

sync_t, pthread_cond_destroy(), pthread_mutex_destroy(), pthread_rwlock_destroy(), sem_destroy(), SyncTypeCreate()




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