boost::interprocess::shared_memory_object::удалить не удается

Я провел небольшой тест и смог без проблем создавать и удалять boost::interprocess::shared_memory_object в исполняемом файле C++/CLI. В плагине C++/CLI dll я могу создать только boost::interprocess::shared_memory_object, но удаление не удается. Я проверил, что файл существует на момент удаления - он присутствует в папке boost::interprocess в подпапке с именем "20110606204418.125000". Память не была отображена никаким другим процессом. Есть идеи, в чем может быть причина? Вначале я думал, что это может быть как-то связано с тем, что проект представляет собой dll и нацелен на CLR, но, честно говоря, я не знаю. РЕДАКТИРОВАТЬ: код удаления вызывается другим потоком, чем код создания - это запрещено?


person andriej    schedule 06.06.2011    source источник
comment
Кажется, что можно удалить в другом потоке, если вы синхронизируете операции, чтобы избежать удаления, пока выполняются другие операции над тем же самым.   -  person John Zwinck    schedule 07.06.2011


Ответы (1)


Во время отладки я заметил, что путь к файлу, который нужно удалить внутри boost::interprocess::shared_memory_object::remove, отличается от файла, созданного конструктором boost::interprocess::shared_memory_object — путь, который нужно удалить, указывает на корень папка «boost_interprocess», в то время как фактически созданный файл находится в папке «boost_interprocess/20110606204418.125000». Поэтому я сообщил об ошибке для повышения. Посмотрим, что они с этим сделают.

person andriej    schedule 07.06.2011
comment
У вас есть ссылка на отчет об ошибке? - person Jacob Peddicord; 20.09.2011