Если вам нужно писать файл редко, как насчет записи файла под временным именем и последующего использования переименования, чтобы сделать его «видимым» для читателей?
Это работает надежно только с файловыми системами Unix. В Windows вам нужно будет обработать случай, когда какой-то процесс открывает файл (для чтения). В этом случае переименовать не удастся. Просто повторите попытку, пока переименование не пройдет успешно.
Я предлагаю тщательно проверить это, потому что вы можете столкнуться с перегрузкой: существует так много запросов на чтение, что задача записи не может заменить файл в течение длительного времени.
Если это так, заставьте читателей проверить временный файл и подождите несколько секунд со следующим чтением, пока файл не исчезнет.