【问题标题】:Creating Managed Shared Memory using Boost Interprocess takes long time使用 Boost Interprocess 创建托管共享内存需要很长时间
【发布时间】:2018-10-29 10:03:33
【问题描述】:

我在带有 Windows Embedded 7 64 位操作系统的 Intel i7 处理器上使用 Boost.Interprocess 库。我已经成功地从 2 个不同的进程创建了 2 个大约 400 MB 大小的托管共享内存。当我尝试从第三个进程创建 1 GB 托管共享内存时,需要 5 分钟以上。驱动器中有足够的可用空间。 进程卡在函数上:

new managed_shared_memory(open_or_create, name, 1 Gigabyte);

为什么这么慢?如果我单独运行这个过程,不到 1 秒。

【问题讨论】:

  • 你的问题是什么?解释为什么它很慢或者您正在寻找替代解决方案?
  • 或者为什么进程卡在函数'managed_shared_memory'上?

标签: c++ boost boost-interprocess


【解决方案1】:

当我尝试从第三个进程创建 1 GB 托管共享内存时,

是否使用了其他名称?如果不是,则可能是另一个进程持有锁。如果另一个进程崩溃了,它甚至可能已经放弃了处于保持状态的锁。另见例如。 Boost interprocess mutexes and checking for abandonment

需要超过 5 分钟。驱动器中有足够的可用空间。进程卡在函数上:managed_shared_memory::managed_shared_memory

共享内存是内存,而不是文件。如果您的系统内存太少无法支持虚拟领域,您将看到大量交换(磁盘在等待期间是否非常活跃?那么这可能是您的问题)。

如果您想要内存映射文件,请使用managed_mapped_file。无需其他更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2012-11-26
    • 2015-09-10
    • 2014-04-13
    • 2013-10-05
    相关资源
    最近更新 更多