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