boost::interprocess::shared_memory_object::remove 失败

Posted

技术标签:

【中文标题】boost::interprocess::shared_memory_object::remove 失败【英文标题】:boost::interprocess::shared_memory_object::remove fails 【发布时间】:2011-06-06 20:48:48 【问题描述】:

我做了一些测试,我能够毫无问题地在 C++/CLI 可执行文件中创建和删除 boost::interprocess::shared_memory_object。在 C++/CLI dll 插件中,我只能创建 boost::interprocess::shared_memory_object 但删除失败。我验证了该文件在删除时存在 - 它存在于 boost::interprocess 文件夹中名为“20110606204418.125000”的子文件夹中。内存尚未被任何其他进程映射。任何想法可能是什么原因?一开始我认为这可能与作为 dll 并针对 CLR 的项目有关,但老实说我不知道​​。 编辑:删除代码由与创建代码不同的线程调用 - 这是不允许的吗?

【问题讨论】:

似乎可以在不同的线程中删除,只要您同步操作以避免在同一事物的其他操作正在进行时删除。 【参考方案1】:

在调试过程中,我注意到要在 boost::interprocess::shared_memory_object::remove 中删除的文件路径与 boost::interprocess::shared_memory_object 构造函数创建的文件不同 - 要删除的路径指向“boost_interprocess”文件夹的根目录,而实际创建的文件位于“boost_interprocess/20110606204418.125000”文件夹中。所以我报告了一个要提升的错误。我们会看看他们会怎么做。

【讨论】:

你有错误报告的链接吗?

以上是关于boost::interprocess::shared_memory_object::remove 失败的主要内容,如果未能解决你的问题,请参考以下文章