LINUX.ORG.RU

Запись / чтение файлов...


0

0

Подскажите, как будет осуществляться запись / чтение если:
- есть ~20 процессов, которые читают файл, при чтении не осуществляется никаких блокировок.
- есть ~5 процессов которые пишут в тот же файл, при этом каждый из них ждет получения LOCK'а на запись.


Может ли быть такая ситуация что кто-то из читателей получит не доконца записанный файл?
Или ОС не даст читать файл пока кто-то в него пишет?

anonymous

Ответ на: комментарий от alphex_kaanoken

Лочу из Perl:
open(FH, ">>$file");
flock(FH, LOCK_EX);
...
print FH ...;
...
close(FH);

Читаю:
open(FH, "<$file");
...
close(FH);

Процессы пускаются веб-сервером.

anonymous
()

Ядро не возьмет блокировок во время чтения, поэтому чтение с записью может происходить одновременно и легко можно прочитать мусор. Используйте rw-блокировки, если у вас много читающих и мало пишущих.

anonymous
()
Ответ на: комментарий от anonymous

должно блокироваться, хотя как сделаны обвязки в perl не знаю.

alphex_kaanoken ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.