列出名为托管共享内存的速推器的名称

List names of boost named managed shared memory

本文关键字:内存 共享      更新时间:2023-10-16

我正在使用提升managed_shared_memory。我正在按名称创建。

例如:managed_shared_memory段(open_only,单名);

在自己的段中,我可以列出所有现有对象(由 Segment::construct 创建)。

但是是否可以获取现有细分的列表?(例如,避免双重命名...

如(伪):

boost::interprocess::list_existing_segments 

如果可能,请解释一下。如果没有,请好心确认。

问候早咬

但是是否可以获取现有细分的列表?

给予足够的特权,可能是的。然而,这不是Boost的重点(使用Process Explorer等工具来检查系统细节;在linux上,ls /dev/shm通常会有所帮助)。¹

(例如,避免双重命名...

这是不可行的,因为此时你只会得到一场比赛。一旦您"确定"给定名称尚未使用,它可能会同时由系统中的许多其他进程之一创建。所以你的检查结果是没有用的。

您不能通过进程间同步来对冲此问题,因为 (catch-22) 相同的问题适用于用于该同步的同步对象。

简而言之:您只能尝试创建并注意到它失败了。


¹ 同样,Boost 并不关注低级硬件访问,而是抽象出可移植的更高级别的接口