使用Boost Interprocess创建托管共享内存需要很长时间

时间:2018-10-29 10:03:33

标签: c++ boost boost-interprocess

我在具有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秒的时间。

1 个答案:

答案 0 :(得分:0)

  

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

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

  

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

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

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