Когда я создаю новый boost::interprocess::managed_shared_memory
, я вижу файл, отображаемый в C:\ProgramData\boost_interprocess\1571641094\NAME_OF_SHARED_MEMORY
, размер которого, кажется, соответствует размеру созданной совместно используемой памяти.
Мое понимание из документации это то, что есть два широко используемых объекта, используемых для совместного использования памяти между процессами (в пределах managed_shared_memory
):
- basic_managed_shared_memory
- basic_managed_mapped_file
managed_shared_memory
использует реализацию basic_managed_shared_memory
. Я предположил, что эта реализация правильная совместно используемая память , а не сопоставленная память файл .
Видя, что он используетфайл озадачивает меня. Обе эти управляемые разделяемые памяти основаны на реализации файла с отображенной памятью?
Является ли единственное решение для расширенной разделяемой памяти в Windows, которое позволяет избежать файлов с отображенной памятью, windows_shared_memory
?
Примечание: яв Windows 10 с использованием VC ++ на VS2013.
Пример кода, который может воспроизвести поведение создания файла в ProgramData
при использовании managed_shared_memory
:
#include <boost/interprocess/managed_shared_memory.hpp>
int main(int argc, char *argv[])
{
boost::interprocess::permissions permissions;
permissions.set_unrestricted();
boost::interprocess::managed_shared_memory* sharedMemory;
sharedMemory = new boost::interprocess::managed_shared_memory(
{
boost::interprocess::open_or_create,
"NAME_OF_SHARED_MEMORY",
400000,
0,
permissions
}
);
return 0;
}