Всем привет. В википедии есть разбор задачи читателей-писателей. В принципе, всё понятно... Но в реальной жизни всё слегка сложнее. Конкретно в моём случае, есть файл, который два процесса пишут, два процесса читают. Но. А что делать, если читатели хотят кешировать файл? Может есть какое-то готовое решение? Сам придумать не смог, ибо в классическом варианте чтение данных начинается с "захватить мьютекс"... Ну не перечитывать же файл в кеш всякий раз, когда мьютекс реально удалось захватить ;) Может файл и не менялся вовсе...
Прекрасно, вы своими руками дошли до одной из фундаментальных задач современного айти "инвалидация кэша". Сорян, универсального и хорошего решения тут нет.
Всё очень просто:
1. Есть минимальный объект (в данном случае - файл)
2. Есть флаг обновления минимального объекта (триггер действия, метка времени обновления или/и несовпадение хеша контента в кэше)
Всё это - для объекта "файл".
Если проблема читать строки внутри файла (или параметры там чего-либо) - нужно уменьшить минимальный объект так, чтобы он удовлетворял всем пунктам.