Я бы рассмотрел синхронизацию в этом случае. Представьте, что 2 потока (t1 и t2) открывают файл одновременно и начинают запись в него. Изменения, выполненные первым потоком, перезаписываются вторым потоком, потому что второй поток является последним, чтобы сохранить изменения в файле. Когда поток t1 записывает в файл, t2 должен подождать, пока t1 завершит свою задачу, прежде чем он сможет его открыть.
Кроме того, если вы заботитесь о последнем возможном обновлении файла, вам следует синхронизировать потоки записи с потоком, который читает файл, так что если какой-либо поток записывает файл, поток чтения должен ждать.