Содержание
- Примитивы синхронизации
- KosCondvarBroadcast()
- KosCondvarDeinit()
- KosCondvarInit()
- KosCondvarSignal()
- KosCondvarWait()
- KosCondvarWaitTimeout()
- KosEventDeinit()
- KosEventInit()
- KosEventReset()
- KosEventSet()
- KosEventWait()
- KosEventWaitTimeout()
- KosMutexDeinit()
- KosMutexInit()
- KosMutexInitEx()
- KosMutexLock()
- KosMutexLockTimeout()
- KosMutexTryLock()
- KosMutexUnlock()
- KosRWLockDeinit()
- KosRWLockInit()
- KosRWLockRead()
- KosRWLockTryRead()
- KosRWLockTryWrite()
- KosRWLockUnlock()
- KosRWLockWrite()
- KosSemaphoreDeinit()
- KosSemaphoreInit()
- KosSemaphoreSignal()
- KosSemaphoreTryWait()
- KosSemaphoreWait()
- KosSemaphoreWaitTimeout()
KosCondvarBroadcast()
Функция объявлена в файле kos/condvar.h
.
void KosCondvarBroadcast(KosCondvar *condvar);
Функция пробуждает все потоки из очереди потоков, заблокированных посредством условной переменной condvar
.
KosCondvarDeinit()
Функция объявлена в файле kos/condvar.h
.
void KosCondvarDeinit(KosCondvar *condvar);
Функция деинициализирует условную переменную condvar
.
KosCondvarInit()
Функция объявлена в файле kos/condvar.h
.
void KosCondvarInit(KosCondvar *condvar);
Функция инициализирует условную переменную condvar
.
KosCondvarSignal()
Функция объявлена в файле kos/condvar.h
.
void KosCondvarSignal(KosCondvar *condvar);
Функция пробуждает один поток из очереди потоков, заблокированных посредством условной переменной condvar
.
KosCondvarWait()
Функция объявлена в файле kos/condvar.h
.
Retcode KosCondvarWait(KosCondvar *condvar, KosMutex *mutex);
Функция блокирует исполнение текущего потока посредством условной переменной condvar
, пока он не будет пробужден с помощью KosCondvarSignal() или KosCondvarBroadcast().
mutex
– мьютекс, который будет использован для защиты критической секции.
В случае успеха функция возвращает rcOk.
В началоKosCondvarWaitTimeout()
Функция объявлена в файле kos/condvar.h
.
Retcode KosCondvarWaitTimeout(KosCondvar *condvar, KosMutex *mutex,
rtl_uint32_t mdelay);
Функция блокирует исполнение текущего потока посредством условной переменной condvar
, пока он не будет пробужден с помощью KosCondvarSignal() или KosCondvarBroadcast(). Поток блокируется не более чем на mdelay
миллисекунд.
mutex
– мьютекс, который будет использован для защиты критической секции.
Функция возвращает rcOk в случае успеха и rcTimeout, если время ожидания истекло.
В началоKosEventDeinit()
Функция объявлена в файле kos/event.h
.
void KosEventDeinit(KosEvent *event);
Функция освобождает ресурсы, связанные с событием event
(уничтожает событие).
KosEventInit()
Функция объявлена в файле kos/event.h
.
void KosEventInit(KosEvent *event);
Функция создает событие event
.
Созданное событие находится в несигнальном состоянии.
В началоKosEventReset()
Функция объявлена в файле kos/event.h
.
void KosEventReset(KosEvent *event);
Функция переводит событие event
в несигнальное состояние (сбрасывает событие).
KosEventSet()
Функция объявлена в файле kos/event.h
.
void KosEventSet(KosEvent *event);
Функция переводит событие event
в сигнальное состояние (сигнализирует событие) и таким образом пробуждает все потоки, ожидающие его.
KosEventWait()
Функция объявлена в файле kos/event.h
.
void KosEventWait(KosEvent *event, rtl_bool reset);
Функция ожидает перехода события в сигнальное состояние.
Параметр reset
указывает, следует ли автоматически сбросить событие при успешном завершении ожидания.
Функция возвращает rcOk в случае успеха.
В началоKosEventWaitTimeout()
Функция объявлена в файле kos/event.h
.
Retcode KosEventWaitTimeout(KosEvent *event, rtl_bool reset,
rtl_uint32_t msec);
Функция ожидает перехода события в сигнальное состояние в течение msec
миллисекунд.
Параметр reset
указывает, следует ли автоматически сбросить событие при успешном завершении ожидания.
Функция возвращает rcOk в случае успеха и rcTimeout при превышении таймаута.
В началоKosMutexDeinit()
Функция объявлена в файле kos/mutex.h
.
void KosMutexDeinit(KosMutex *mutex);
Функция уничтожает мьютекст mutex
.
KosMutexInit()
Функция объявлена в файле kos/mutex.h
.
void KosMutexInit(KosMutex *mutex);
Функция выполняет инициализацию мьютекса mutex
в незаблокированном состоянии.
KosMutexInitEx()
Функция объявлена в файле kos/mutex.h
.
void KosMutexInitEx(KosMutex *mutex, int recursive);
Функция выполняет инициализацию мьютекса mutex
в незаблокированном состоянии.
Для инициализации рекурсивного мьютекса в параметр recursive
нужно передать значение 1.
KosMutexLock()
Функция объявлена в файле kos/mutex.h
.
void KosMutexLock(KosMutex *mutex);
Функция захватывает мьютекс mutex
.
Если мьютекс уже захвачен, поток блокируется в ожидании его разблокировки.
В началоKosMutexLockTimeout()
Функция объявлена в файле kos/mutex.h
.
Retcode KosMutexLockTimeout(KosMutex *mutex, rtl_uint32_t mdelay);
Функция захватывает мьютекс mutex
.
Если мьютекс уже захвачен, поток блокируется на mdelay
миллисекунд в ожидании его разблокировки.
Функция возвращает rcOk в случае успеха и rcTimeout, если время ожидания истекло.
В началоKosMutexTryLock()
Функция объявлена в файле kos/mutex.h
.
Retcode KosMutexTryLock(KosMutex *mutex);
Функция делает попытку захвата мьютекса mutex
.
Функция возвращает rcOk, если мьютекс удалось захватить и rcBusy, если мьютекс не удалось захватить, так как он уже захвачен.
В началоKosMutexUnlock()
Функция объявлена в файле kos/mutex.h
.
void KosMutexUnlock(KosMutex *mutex);
Функция разблокирует мьютекс mutex
.
Для разблокировки рекурсивного мьютекса нужно сделать столько вызовов KosMutexUnlock()
, сколько раз рекурсивный мьютекс был заблокирован.
KosRWLockDeinit()
Функция объявлена в файле kos/rwlock.h
.
void KosRWLockDeinit(KosRWLock *rwlock);
Функция деинициализирует блокировку чтения-записи rwlock
.
KosRWLockInit()
Функция объявлена в файле kos/rwlock.h
.
void KosRWLockInit(KosRWLock *rwlock);
Функция инициализирует блокировку чтения-записи rwlock
.
KosRWLockRead()
Функция объявлена в файле kos/rwlock.h
.
void KosRWLockRead(KosRWLock *rwlock);
Функция блокирует потоки чтения.
В началоKosRWLockTryRead()
Функция объявлена в файле kos/rwlock.h
.
Retcode KosRWLockTryRead(KosRWLock *rwlock);
Функция делает попытку блокировки потоков чтения.
В случае успеха функция возвращает rcOk.
В началоKosRWLockTryWrite()
Функция объявлена в файле kos/rwlock.h
.
Retcode KosRWLockTryWrite(KosRWLock *rwlock);
Функция делает попытку блокировки потоков записи.
В случае успеха функция возвращает rcOk.
В началоKosRWLockUnlock()
Функция объявлена в файле kos/rwlock.h
.
void KosRWLockUnlock(KosRWLock *rwlock);
Функция снимает блокировку чтения-записи rwlock
.
KosRWLockWrite()
Функция объявлена в файле kos/rwlock.h
.
void KosRWLockWrite(KosRWLock *rwlock);
Функция блокирует потоки записи.
В началоKosSemaphoreDeinit()
Функция объявлена в файле kos/semaphore.h
.
Retcode KosSemaphoreDeinit(KosSemaphore *semaphore);
Функция уничтожает семафор semaphore
, инициализированный ранее функцией KosSemaphoreInit()
.
Безопасно уничтожать инициализированный семафор, на котором в настоящее время нет заблокированных потоков. Эффект уничтожения семафора, на котором в данный момент заблокированы другие потоки, непредсказуем.
Функция возвращает:
- rcOk в случае успеха;
- rcInvalidArgument, если
semaphore
указывает на невалидный семафор; - rcFail, если есть потоки, заблокированные этим семафором.
KosSemaphoreInit()
Функция объявлена в файле kos/semaphore.h
.
Retcode KosSemaphoreInit(KosSemaphore *semaphore, unsigned count);
Функция инициализирует семафор semaphore
с начальным значением count
.
Функция возвращает:
- rcOk в случае успеха;
- rcInvalidArgument, если
semaphore
указывает на невалидный семафор; - rcFail, если значение
count
превышает KOS_SEMAPHORE_VALUE_MAX.
KosSemaphoreSignal()
Функция объявлена в файле kos/semaphore.h
.
Retcode KosSemaphoreSignal(KosSemaphore *semaphore);
Функция освобождает (сигнализирует) семафор semaphore
.
Функция возвращает:
- rcOk в случае успеха;
- rcInvalidArgument, если
semaphore
указывает на невалидный семафор.
KosSemaphoreTryWait()
Функция объявлена в файле kos/semaphore.h
.
Retcode KosSemaphoreTryWait(KosSemaphore *semaphore);
Функция делает попытку захвата семафора semaphore
.
Функция возвращает:
- rcOk в случае успеха;
- rcInvalidArgument, если
semaphore
указывает на невалидный семафор; - rcBusy, если семафор уже захвачен.
KosSemaphoreWait()
Функция объявлена в файле kos/semaphore.h
.
Retcode KosSemaphoreWait(KosSemaphore *semaphore);
Функция ожидает захвата семафора semaphore
.
Функция возвращает:
- rcOk в случае успеха;
- rcInvalidArgument, если
semaphore
указывает на невалидный семафор.
KosSemaphoreWaitTimeout()
Функция объявлена в файле kos/semaphore.h
.
Retcode KosSemaphoreWaitTimeout(KosSemaphore *semaphore, rtl_uint32_t mdelay);
Функция ожидает захвата семафора semaphore
в течение mdelay
миллисекунд.
Функция возвращает:
- rcOk в случае успеха;
- rcInvalidArgument, если
semaphore
указывает на невалидный семафор; - rcTimeout, если время ожидания истекло.