列出名为托管共享内存的boost名称

时间:2015-01-15 10:12:03

标签: c++ linux boost shared-memory

我正在使用boost managed_shared_memory。我正在创造名字。

例如:managed_shared_memory Segment(open_only,OneName);

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

但是有可能获得现有细分的列表吗? (例如,避免双重命名......)

如(Pseudo):

boost::interprocess::list_existing_segments 

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

问候语 Earlybite

1 个答案:

答案 0 :(得分:0)

  

但是有可能获得现有细分的列表吗?

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

  

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

这不可行,因为此时你只会参加比赛。只要您“确定”某个名称尚未使用,它就可以同时由系统中的许多其他进程之一创建。因此,检查结果毫无用处。

您无法通过进程间同步来对冲它,因为(catch-22)同样的问题适用于用于此的同步对象。

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


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