2

假设我有一个函数,它将指向(进程)堆内存的指针作为输入。此函数与同一系统上的服务进程通信,并使用共享内存进行通信(我需要最大吞吐量,因此这是我可以使用的唯一可接受的 IPC 形式)。

有没有办法将已经分配的堆内存用作共享内存(即映射到文件)而无需重新分配相同大小的共享内存缓冲区?因为我需要支持几百兆字节(可能是千兆字节)的内存缓冲区,并且不得不两次分配这么多内存很糟糕。

此外,由于延迟,分配一个小的共享内存缓冲区并重复使用它是不可接受的(因为我需要在两个进程之间多次同步小缓冲区更新)。

我可以设计我的函数,使其需要一个指向共享内存的指针,但这会给我的函数的用户带来负担(因为他们必须自己管理他们的共享内存)并且灵活性要差得多,并且会产生相当如果管理不当,会产生很多开销。

TL;DR:我需要一种方法来映射堆内存,以便另一个进程可以直接写入其中而无需通过中间共享内存缓冲区。

有谁知道这是怎么做到的吗?谢谢。

4

0 回答 0