我在具有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秒的时间。
答案 0 :(得分:0)
当我尝试通过第三个进程创建1 GB的托管共享内存时,
是否使用其他名称?如果不是,则可能是另一个进程持有锁。如果另一个进程崩溃了,它甚至可能已经放弃了处于保持状态的锁。另见。 Boost interprocess mutexes and checking for abandonment
需要5分钟以上。驱动器中有足够的可用空间。该过程卡在了函数
上managed_shared_memory::managed_shared_memory
共享内存是内存,而不是文件。如果您的系统内存不足以支持虚拟领域,那么您将看到很多交换(磁盘在等待期间是否非常活跃?这可能是您的问题)。
如果要使用内存映射文件,请使用managed_mapped_file
。无需其他更改。