Существует ли различие между повышением iostream отображаемый файл, и повысьте межпроцессный отображаемый файл?

Я хочу создать отображенный двоичный файл в память; однако я не уверен, как создать файл, который будет отображен в систему. Я несколько раз читал документацию и понимаю, что существует 2 реализации отображаемого файла, один в iostream и другом в межпроцессном.

Вы у парней есть какая-либо идея о том, как создать отображаемый файл в общую память? Я пытаюсь позволить многопоточной программе читать массив больших, двойных записанный в формате двоичного файла. Также, каково различие между отображаемым файлом в iostream и межпроцессный?

12
задан Jonathan Leffler 9 April 2010 в 03:00
поделиться

2 ответа

Насколько я могу судить, iostreams поместит отображаемый файл в общую память (это то, что вы хотите); однако межпроцессор помещает файл в адресное пространство другого процесса.

Вероятно, вам следует использовать iostreams, если у вас нет нескольких процессов (не потоков), которые будут каким-либо образом взаимодействовать друг с другом.

2
ответ дан 3 December 2019 в 00:00
поделиться

Главное различие, которое я вижу между ними, заключается в том, как они используются. В boost-interprocess , чтобы использовать отображаемый в память файл, вы создаете объекты в этом пространстве памяти, используя размещение new , и эти объекты автоматически сохраняются в двоичной форме в вашем файле. Затем другие процессы могут сопоставить тот же файл и использовать эти объекты, или сама программа может использовать его в качестве постоянного кеша и перезагружать их позже. Файлы с отображением памяти в boost-iostreams действуют точно так же, как файловые потоки, с дополнительными преимуществами в виде boost :: iostream и обеспечивают семантику потока для межпроцессного взаимодействия.

Для одного процесса использование файлов с отображением в память boost :: iostream не приносит особой пользы. Однако это может уменьшить задержку при работе с файлом, поскольку он уже был загружен в память. Но вы получите это преимущество только в том случае, если вы постоянно переписываете части файла. Для одного прохода чтения / записи файла не может быть никакого ускорения.

0
ответ дан 3 December 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: