使用Boost Interprocess创建托管共享内存需要很长时间
Creating Managed Shared Memory using Boost Interprocess takes long time
我正在使用Boost。采用Windows Embedded 7 64位操作系统的英特尔i7处理器上的进程间库。我已经成功地从两个不同的进程创建了两个大约400兆字节大小的托管共享内存。当我尝试从第三个进程创建1 GB的托管共享内存时,它需要5分钟以上的时间。驱动器中有充足的可用空间。进程卡在功能上:
new managed_shared_memory(open_or_create, name, 1 Gigabyte);
为什么这么慢?如果我单独运行这个过程,它只需要不到1秒的时间。
当我试图从第三个进程创建1 GB托管共享内存时
是否使用其他名称?如果没有,可能是另一个进程持有锁。如果另一个进程崩溃,它甚至可能会放弃处于保持状态的锁。另请参见例如,增强进程间互斥和检查放弃
这需要5分钟以上的时间。驱动器中有充足的可用空间。进程卡在功能上:
managed_shared_memory::managed_shared_memory
共享内存是内存,而不是文件。如果你的系统内存太少,无法支持虚拟领域,你会看到很多交换(在等待过程中磁盘是否非常活跃?那么这可能是你的问题(。
如果需要内存映射文件,请使用managed_mapped_file
。无需其他更改。
相关文章:
- 使用Boost Interprocess创建托管共享内存需要很长时间
- SFML RenderWindow打开窗口需要很长时间
- Kafka C++客户端需要很长时间才能收到消息
- 给定使用 C++ 或 C,我如何测量在 linux 下进行线程切换需要多长时间?可能吗?
- asio::read() 需要很长时间,使用 asio::write 没有问题
- 将线程锁定很长时间
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- 即使长时间等待,C++线程也不会加入
- 连接() 在连接被拒绝时长时间挂起
- 为什么这段代码需要这么长时间才能用 g++ 编译?
- 如何在长时间运行的方法中等待信号?
- mbed 套接字连接需要很长时间
- Lambda 捕获此函数和长时间运行的函数
- std::fstream 需要很长时间才能将大数据写入.csv文件中
- 为什么与Java和Python相比,使用Cmake运行C++程序每次都需要这么长时间?
- 需要很长时间
- 在关闭应用程序期间正确关闭线程,该线程可能会运行很长时间的循环
- 如何在长时间计算中进行C 的一次进度更新
- 对于长时间运行的程序,STL 内存管理是否"reliable"?
- C++中内存泄漏本身存在多长时间,以及等效的Java程序有何不同