Я создаю систему, в которой несколько подчиненных процессов взаимодействуют через сокеты домена unix, и они пишут в тот же файл одновременно. Я никогда не изучал файловые системы или эту конкретную файловую систему (ext4), но кажется, что здесь может быть какая-то опасность.
Каждый процесс записывает в непересекающееся подмножество выходного файла (т.е. в написанных блоках нет перекрытия). Например, P1
записывает только первые 50% файла, а P2
записывает только на второй 50%. Или, возможно, P1
записывает только блоки с нечетным номером, а P2
записывает четные блоки.
Безопасно ли иметь P1
и P2
(работает одновременно на отдельных потоках), записывая в тот же файл без какой-либо блокировки? Другими словами, файловая система накладывает какую-то блокировку неявно?
Примечание. Я, к сожалению, не могу выпустить несколько файлов и присоединиться к ним позже.
Примечание: Мое чтение после публикации этого вопроса не согласуется с единственным опубликованным ответом ниже. Все, что я читал, говорит о том, что то, что я хочу сделать, прекрасно, тогда как ниже ответчик настаивает на том, что я делаю, небезопасно, но я не могу различить описанную опасность.