取消映射提升共享内存
Unmapping boost shared memory
我有一个代码,其中 boost 共享内存由单个编写器和许多 readers 使用。
writer创建共享内存,以写权限打开,时不时向其中写入数据。
读者一直来来去去,每个 reader 映射到具有 read_only 权限的共享内存,做它做的事情,而不是调用 remove。
问题似乎是当 reader 完成它正在做的事情时。它调用 remove,但是,remove 会删除新 reader 的 shared_memory 文件,它们无法映射到它。
我的问题是,进程如何从共享内存中分离出来而不删除它? boost 库中似乎没有分离功能。
您应该可以使用共享引用计数。
实现此目的的共享共享指针或信号量。
对于 Boost Interprocess,关闭 不会 删除 mapping/shared 对象。只是不要调用 remove.
我有一个代码,其中 boost 共享内存由单个编写器和许多 readers 使用。
writer创建共享内存,以写权限打开,时不时向其中写入数据。
读者一直来来去去,每个 reader 映射到具有 read_only 权限的共享内存,做它做的事情,而不是调用 remove。
问题似乎是当 reader 完成它正在做的事情时。它调用 remove,但是,remove 会删除新 reader 的 shared_memory 文件,它们无法映射到它。
我的问题是,进程如何从共享内存中分离出来而不删除它? boost 库中似乎没有分离功能。
您应该可以使用共享引用计数。
实现此目的的共享共享指针或信号量。
对于 Boost Interprocess,关闭 不会 删除 mapping/shared 对象。只是不要调用 remove.