home   contents  previous      next        up

semaphor.h

Файл semaphor.h содержит определения типа Semaphore и функций управления семафорами.

Функция

Semaphore *SemAlloc(int initvalue);

выделят память для дескриптора семафора, инициализирует его с помощью функции SemInit. В случае успешного выполнения SemAlloc возвращает указатель на созданный дескриптор, иначе результатом является NULL.

Функция

void SemInit(Semaphore *sem, int initvalue);

записывает в дескриптор семафора sem начальные данные и присваивает счетчику семафора значение initvalue.

Макрофункция SEMAPHOREINIT, как и SemInit инициализирует переменную типа Semaphore.

Процесс, вызвавший функцию

void SemWait (Semaphore *sem);

приостанавливается, если счетчик семафора имеет значение 0. В противном случае значение счетчика семафора уменьшается на единицу, а процесс продолжает работу. Приостановленные процессы помещаются в очередь к семафору и не исполняются, пока какой-нибудь процесс не увеличит счетчик семафора. Это можно сделать с помощью функции

void SemSignal(Semaphore *sem);

Выполнение этой функции приводит к тому, что следующий процесс из очереди к семафору sem возобновляет работу. Если очередь к семафору пустая, то значение счетчика семафора увеличивается на единицу.


home   contents  previous      next        up