Блокировка и снятие блокировки с области байтов в файлах


Хотя система позволяет больше чем одной программе открывать файл и записывать в него, тем не менее приложения не должны переписывать заново работу друг друга. Прикладная программа может предотвратить эту проблему, временно блокируя область в файле. Функции LockFile и LockFileEx блокируют заданный интервал байтов в файле. Этот блок может простираться за текущий конец файла. Блокировка части файла дает потокам блокированных  процессов монопольный доступ к заданной области, используя указанный дескриптор файла. Попытки получить доступ к области, заблокированной другим процессом всегда завершаются ошибкой. Если блокированный процесс пытается получить доступ к блокированной области через посредство второго дескриптора файла, попытка завершается ошибкой.

Функция LockFileEx позволяет программе определить одну из двух блокировок. Монопольная блокировка (exclusive lock)  не дает доступа всем другим процессам ни для чтения, ни  для записи в заданной области файла. Совместно используемая блокировка (shared lock) не дает доступа для записи всем процессам в заданной области файла, включая процесс, который первым блокировал область. Она может использоваться, чтобы создать  в файле область только для чтения.

Приложение деблокирует область, используя функцию UnlockFile или UnlockFileEx. Программа должна деблокировать все заблокированные области перед закрытием файла.

Пример, см. в статье Добавление одного файла в конец другого файла.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz