Команды Unix: блокировки файлов, семафоры
Блокировки файлов
Рассмотрим две проблемы. Во-первых, возникает вопрос — что случится, если сервер в текущий момент занят переписыванием содержимого файла, а клиент попытается обратиться к файлу на чтение? Клиент при обращении к файлу найдет его пустым или не полностью сформированным. В серверах, которые обрабатывают метеорологические данные, где используются более длинные сообщения, такая проблема, вероятно, возникнет. Поэтому, пока сервер занят переписыванием содержимого файла, клиенты должны ждать окончания этой процедуры на сервере. Однако если вы арендуете какой-нибудь из топ 10 серверов у надежной компании, которая предоставляет так же в комплекте его обслуживание, то вам никогда не придётся заботиться о проблемах, возникающих на нём и эффективно работать со своими ресурсами.
Рассмотрим теперь противоположную ситуацию. Что произойдет, если клиент читает файл строку за строкой и неожиданно сервер отбирает у клиента файл, сбрасывает содержимое файла и начинает записывать в файл новые данные. Клиент убедится, что файл изменился, увидев это собственными глазами. Поэтому, когда клиент читает файл, сервер должен ждать, когда клиент закончит процедуру чтения. Другим клиентам нет необходимости ждать окончания чтения. Но если несколько процессов будут одновременно читать один и тот же файл, то в этом нет никакого риска.