在c ++程序中有效使用POSIX共享内存

时间:2015-10-25 20:10:51

标签: c++ c linux posix shared-memory

我在linux机器上使用基于POSIX API的共享内存来在多个MPI进程之间进行通信。我有一个可行的解决方案,但我想知道如何有效地使用共享内存空间来存储大数据。

我有一台64GB共享内存限制的机器,我可能需要写入数据> 64GB进入这个空间,但这些都是1-2GB的小块。

我想知道的是:

  • 如果我的1-2GB数据块的目的一旦提供,我怎么能真正删除占用的内存?我不再需要这些数据了?

我正在使用shm_unlink()但它似乎没有清除/ dev / shm /

中的空格

请帮忙!

1 个答案:

答案 0 :(得分:0)

来自http://pubs.opengroup.org/onlinepubs/009695399/functions/shm_unlink.html中的sum_unlink说明 似乎实际上推迟了内存删除,如下所示:

如果对象取消链接时存在对共享内存对象的一个​​或多个引用,则在shm_unlink()返回之前应删除该名称,但是应该推迟删除内存对象内容,直到所有打开和映射引用为止。共享内存对象已被删除。

我希望这有帮助。