gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:30 25 4
gpt4 key购买 nike

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

例如:managed_shared_memory Segment(open_only, OneName);

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

但是是否有可能获得现有 segmentation 市场的列表? (例如,避免重复命名...)

比如(伪):

boost::interprocess::list_existing_segments 

如果可以,请说明。如果没有,请确认。

问候语早咬

最佳答案

But is it possible to get a list of existing segments?

如果有足够的权限,可能是的。然而,这不是 Boost 关注的重点(使用像 Process Explorer 这样的工具来检查系统细节;在 linux 上,ls/dev/shm 通常有帮助)。 ¹

(E.g. to avoid double naming...)

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

您不能通过进程间同步来解决这个问题,因为(第 22 条军规)同样的问题适用于用于此目的的同步对象。

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


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

关于c++ - 列出名为 boost 的托管共享内存的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27961084/

25 4 0
文章推荐: android - 如何测试android :alwaysRetainTaskState
文章推荐: c++ - 为什么我们需要 C++ 中的 `class`,而 `struct` 可用于实现相同的目的?
文章推荐: android - HTML