9.8. Синхронизация процессов

Добавление файла в группу

int LogFile(char *FileName, BYTE LockDirective,WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileNameпуть к файлу, который необходимо добавить в группу
LockDirectiveпараметр определяет, надо ли блокировать файл сразу после его добавления в группу
Timeoutпериод времени (в 18-х долях секунды), в течение которого файл-сервер будет ожидать, если файл нельзя заблокировать немедленно

Удаление файла из группы

int ClearFile(char *FileName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileNameпуть к файлу, который необходимо удалить из группы

Удаление группы и разблокирование всех файлов

void ClearFileSet(void);


Блокирование группы файлов

int LockFileSet(WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

Timeoutпериод времени (в 18-х долях секунды), в течение которого файл-сервер будет ожидать, если группу файлов нельзя заблокировать немедленно

Разблокирование отдельных файлов

int ReleaseFile(char *FileName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileNameпуть к файлу, который необходимо разблокировать

Разблокирование всех файлов

void  ReleaseFileSet(void);


Добавление физической записи в группу

int LogPhysicalRecord(int FileHandle, long RecordStartOffset,
    long RecordLength, BYTE LockDirective,WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileHandleиндекс файла, которому принадлежит блокируемая запись
RecordStartOffsetсмещение от начала файла
RecordLengthразмер блокируемой записи в байтах
LockDirectiveпараметр определяет, надо ли блокировать запись сразу после добавления ее в группу
Timeoutпериод времени (в 18-х долях секунды), в течении которого файл-сервер будет ожидать, если запись нельзя заблокировать немедленно

Удаление записи из группы

int ClearPhysicalRecord(int FileHandle,
    long RecordStartOffset, long RecordLength);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileHandleиндекс файла, которому принадлежит запись
RecordStartOffsetсмещение от начала файла
RecordLengthразмер блокируемой записи в байтах

Разблокирование группы записей и удаление группы

void ClearPhysicalRecordSet(void);


Блокирование группы физических записей

int LockPhysicalRecordSet(BYTE LockDirective, WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LockDirectiveпараметр LockDirective задает режим блокирования. Если он равен нулю, записи блокируются для монопольного использования заблокировавшей записи программой. Если параметр имеет значение единице, записи блокируются для совместного использования в режиме чтения
Timeoutпериод времени (в 18-х долях секунды), в течение которого файл-сервер будет ожидать, если группу записей нельзя заблокировать немедленно

Разблокирование отдельных записей

int ReleasePhysicalRecord(int FileHandle,
    long RecordStartOffset, long RecordLength);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileHandleиндекс файла, которому принадлежит запись
RecordStartOffsetсмещение от начала файла
RecordLengthразмер записи в байтах

Разблокирование всех физических записей

void  ReleasePhysicalRecordSet(void);


Добавление логической записи в группу

int LogLogicalRecord(char LogicalRecordName,
    BYTE LockDirective,WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LogicalRecordNameимя логической записи, добавляемой в группу блокируемых
LockDirectiveпараметр определяет, надо ли блокировать запись сразу после добавления ее в группу
Timeoutпериод времени (в 18-х долях секунды), в течении которого файл-сервер будет ожидать, если запись нельзя заблокировать немедленно

Удаление логической записи из группы

int ClearLogicalRecord(char LogicalRecordName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LogicalRecordNameимя логической записи

Разблокирование всех логических записей и удаление группы

void ClearLogicalRecordSet(void);


Блокирование группы логических записей

int LockLogicalRecordSet(WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

Timeoutпериод времени (в 18-х долях секунды), в течение которого файл-сервер будет ожидать, если группу логических записей нельзя заблокировать немедленно

Разблокирование отдельных логических записей

int ReleaseLogicalRecord(char LogicalRecordName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LogicalRecordNameимя логической записи

Разблокирование всех логических записей

void  ReleaseLogicalRecordSet(void);


Открытие семафора

int OpenSemaphore(char *SemaphoreName, int InitialValue,
      long *SemaphoreHandle, WORD *OpenCount);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreNameимя открываемого семафора
InitialValueзначение семафора при первом открытии
SemaphoreHandleуказатель на переменную, в которую будет записан индекс открытого семафора
OpenCountсчетчик использования семафора

Закрытие семафора

int CloseSemaphore(long SemaphoreHandle);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreHandleиндекс семафора

Определение состояния семафора

int ExamineSemaphore(long SemaphoreHandle,
      int *SemaphoreValue, WORD *OpenCount);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreHandleиндекс семафора
SemaphoreValueзначение семафора
OpenCountсчетчик использования

Уменьшение значения семафора

int WaitOnSemaphore(long SemaphoreHandle, WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreHandleиндекс семафора
Timeoutвремя, в течении которого функция ожидает доступность ресурса (в 18-х долях секунды).

Увеличение значения семафора

int SignalSemaphore(long SemaphoreHandle);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreHandleиндекс семафора


При использовании материалов сайта ссылка обязательна! (Copyright by www.avs-info.ru 2006)