我有一个代码,其中一个编写器和许多读者使用了boost共享内存。
编写器创建共享内存,使用写入权限打开它,并不时向其写入数据。
读者来来去去,每个读者都以read_only权限映射到共享内存,执行它所做的事情而不是调用remove。
问题似乎是当读者完成任何正在做的事情时。它调用remove,但是,删除删除了新读者的shared_memory文件,他们无法映射到它。
我的问题是,一个进程如何从共享内存中分离出来而不删除它?升级库中似乎没有分离功能。
答案 0 :(得分:0)
您应该可以使用共享引用计数。
共享指针或信号量来实现此目的。
对于Boost Interprocess,关闭不删除映射/共享对象。只是不要打电话删除。