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