Создание управляемой общей памяти с помощью Boost Interprocess занимает много времени - PullRequest
0 голосов
/ 29 октября 2018

Я использую библиотеку Boost.Interprocess на процессоре Intel i7 с 64-разрядной операционной системой Windows Embedded 7. Я успешно создал две управляемые общие памяти размером около 400 мегабайт из двух разных процессов. Когда я пытаюсь создать управляемую совместно используемую память объемом 1 ГБ из третьего процесса, это занимает более 5 минут. На диске достаточно свободного места. Процесс застревает на функции:

new managed_shared_memory(open_or_create, name, 1 Gigabyte);

Почему так медленно? Если я запускаю этот процесс один, это займет не более 1 секунды.

1 Ответ

0 голосов
/ 29 октября 2018

Когда я пытаюсь создать управляемую совместно используемую память объемом 1 ГБ из третьего процесса,

Используется ли другое имя? Если нет, возможно, что другой процесс удерживает блокировку. Если другой процесс завершился сбоем, он мог даже отказаться от блокировки в состоянии удержания. Смотрите также, например. Повышение межпроцессных мьютексов и проверка на отказ

это займет более 5 минут. На диске достаточно свободного места. Процесс застревает на функции: managed_shared_memory::managed_shared_memory

Общая память память , а не файл. Если в вашей системе слишком мало памяти для резервного копирования виртуального царства, вы увидите много перестановок (диск очень активен во время ожидания? Тогда это, вероятно, ваша проблема).

Если вам нужны файлы с отображением в памяти, используйте managed_mapped_file. Никаких других изменений не требуется.

...