我正在尝试提出一种简单但可移植的方式来使用共享内存。Boost::interprocess
似乎是一个不错的起点,但我遇到了一些问题/担忧。
- 我可以以某种方式查询 shm 段的存在吗,最好使用 boost API?我总是可以尝试使用
create_only
并捕获异常来创建它,但这是一个糟糕的设计,我不希望堆栈在“好”路径中展开。 - 即使附加了其他进程,我也可以截断该段吗?(当然,前提是我会处理同步)我想所有其他进程都必须重新映射,它们是否也必须重新连接?
- Boost doc说,在Windows上,便携式
shared_memory_object
实际上并不是共享内存本身,而是一个内存映射文件。我理解正确吗?这意味着我必须在 Windows 上使用专门的代码,这是我试图避免的。让我质疑 Boost 是否适合我的目的,还有其他选择吗?与其与 boost 作斗争,我还不如自己编写特定于平台的代码——在您看来,这值得付出努力吗?