Предположим, что приложение C/C ++ Linux имеет файл журнала фиксированного размера и два потока, которые управляют этим файлом журнала: Производитель и потребитель . Производитель Поток создает большие части данных, которые должны сохраняться в файле журнала в качестве смежного блока. Потребитель Поток считывает данные случайным образом из этого файла журнала (пока данные из файла журнала не перемещаются в некоторое долгосрочное хранилище).
Я хочу использовать pwrite и fsync для записи данных в журнале «Производитель» , потому что, согласно многочисленным источникам, это вполне общепринято для ведения военнослужащего. Но в то же время я хочу сделать потребитель поток считывать файл журнала через MMAP , поскольку данные читаются случайным образом, и я хочу ускорить чтения через Madvise .
Вопрос: ли операционная система (Linux, OS x или любая другая, соответствующая OS). Будет автоматически обновляться или, по крайней мере, недействительно, когда производитель поток обновляет соответствующий блок в файле журнала через pwrite ? Если нет, что я должен сделать, чтобы потребитель поток увидел обновленные данные сразу после обновления?
Подробнее здесь: https://stackoverflow.com/questions/274 ... e-together