Часто плохая идея разрешать одновременные операции записи несколькими процессами в один файл. Разрешение такого процесса требует тщательного планирования. Обычно получается блокировка записи , поэтому только один процесс может обновлять файл одновременно. Без него процессы могут записывать в файл, что приводит к большому беспорядку. Процессы P и Q записывают содержимое с блокировкой примерно так:
p p p
q q q
q q q
p p p
Все хорошо и аккуратно. Теперь давайте разрешим несколько записей, и мы могли бы - возможно, здесь нет никаких гарантий! - получить данные примерно так:
p p q q q
p
q q q
p p p
Здесь произошло то, что после двух p
записей q
пишет три раза и добавляет новую строку. Теперь структура файла уже разбита с пятью записями в строке. Затем третий p
пишется с новой строки. К сожалению, только одна запись в строке. Затем процессы возобновляют запись, и по чистой случайности две следующие строки записываются в правильном порядке.
Правильный способ - получить блокировку, чтобы только один процесс мог обновлять файл одновременно.