sync_t

Объект синхронизации

Прототип:

#include <sys/neutrino.h>
/*
* owner
* -1 Статически инициализированный мьютекс, созданный автоматически в SyncWait
* -2 Уничтоженный мьютекс
* -3 Именованный семафор (поле count используется в качестве fd)
*/
typedef struct _sync {
int __count; /* Счетчик для рекурсивных мьютексов и семафоров */
unsigned __owner; /* Идентификатор потока (только для мьютекса) */
} sync_t;

Описание:

Тип позволяет обслуживать объекты синхронизации. Структура включает следующие поля:

__count
Счетчик для рекурсивных мьютексов и семафоров. Ядро устанавливает это поле в момент создания объекта синхронизации.
__owner
В инициализированном мьютексе данное поле содержит идентификатор потока, который его захватил. Если мьютексом никто не владеет, то значение поля будет установлено в 0 (например, в момент создания мьютекса). Текущее состояние объекта синхронизации может быть следующим:
Счетчик Владелец Описание
-2 Уничтоженный мьютекс
0 -1 Инициализирован статически; будет создан автоматически при первом использовании
0 0 Разблокированный мьютекс без владельца
count >0 Рекурсивный счетчик мьютекса
count <-1 Если старший бит поля count установлен, то это означает, что имеются другие ожидающие потоки
-256 Мьютекс мертв (потенциальное состояния deadlock для разделяемых мьютексов), ожидается вызов SyncMutexRevive()

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

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

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

SyncCondvarSignal(), SyncCondvarSignal_r(), SyncCondvarWait(), SyncCondvarWait_r(), SyncCtl(), SyncCtl_r(), SyncDestroy(), SyncDestroy_r(), SyncMutexEvent(), SyncMutexEvent_r(), SyncMutexLock(), SyncMutexLock_r(), SyncMutexRevive(), SyncMutexRevive_r(), SyncMutexUnlock(), SyncMutexUnlock_r(), SyncSemPost(), SyncSemPost_r(), SyncSemWait(), SyncSemWait_r(), SyncTypeCreate(), SyncTypeCreate_r()




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