Я не знаю о «правильном» пути, но то, что ты делаешь, уже кажется мне правильным. Следующее возможное решение, о котором я могу подумать, - это отдельный процесс записи в этот файл. Остальные процессы будут связываться с процессом регистрации через именованные каналы и (возможно) мьютексы.
Возможно, вы даже можете настроить его так, чтобы не было явного процесса, но один из запущенных процессов (тот, который был запущен первым) берет на себя эту роль. Конечно, могут возникнуть дальнейшие осложнения, когда этот процесс завершится, и необходимо передать право собственности на файл другому процессу. В общем, это не очень красивое решение, но оно должно работать, если ничего не помогает.
Хотя я подозреваю, что есть еще кое-что, о чем никто из нас не думал, потому что есть программы, которые успешно используют файлы для связи.
Хм ... если подумать - у вас уже есть метки времени. Почему бы просто не создать инструмент для просмотра, который сортирует записи по временным меткам? Таким образом, не имеет значения, что и где кэшируется.
Да, и третий - вы пробовали ввод-вывод с отображением в памяти? Это организовано по-другому и может решить вашу проблему (не говоря уже о том, чтобы быть более эффективной).