file locking

file locking — блокировка файла. Многозадачные операционные системы (Unix, Linux, Windows) «оснащены» механизмом блокировки доступа к совместно используемым файлам. Представим такую ситуацию: процесс А пытается открыть файл для записи, а процесс Б — для чтения (или оба — процесс для записи — режим доступа тут особой роли не играет). При этом непонятно, что делать с тем процессом, который обратился к файлу позже. Вместе эти два процесса могут вам такого поназаписывать, что вы потом никогда не поймете, что и откуда взялось. Поэтому и созданы механизмы блокирования доступа к файлу. Когда мы знаем о существовании механизма блокирования доступа, можно уже догадаться, как будут вести себя процессы. Например, процесс Б пытается открыть файл, который уже открыт процессом А. Процесс А сразу же после открытия блокировал файл. Тогда процессу Б ничего другого не остается, как подождать, пока процесс А снимет блокировку с файла. Обратите внимание: снимет блокировку, а не завершит работу. Существует два вида блокировки:

исключительная.

разделяемая.

Предположим, что у нас есть какой-нибудь файл и два процесса, которым нужно записать информацию в этот файл. Процесс А первым открыл файл для записи и заблокировал его, используя исключительную блокировку. Тогда процесс Б будет ждать, пока процесс А не разблокирует файл или не закроет его. Только тогда он сможет получить доступ к файлу для записи. Исключительную блокировку нужно использовать тогда и только тогда,

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