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