gpt4 book ai didi

c++ - 我可以多次访问 boost::interprocess::managed_shared_memory 而无需一次又一次地打开它吗?

转载 作者:行者123 更新时间:2023-12-03 18:04:51 25 4
gpt4 key购买 nike

我正在使用 boost::interprocess::managed_shared_memory 来创建跨进程共享的内存。

以下是采取的步骤:

  1. 步骤

    a) Create memory.
  2. 步骤

    a) Open memory. 
    b) Write to memory
  3. 步骤

    a) Open memory.
    b) Read from memory.
    c) Open memory.
    d) Read from memory.
    e) Open memory.
    f) Read from memory.
    g) ...... and so on and so forth!

现在,问题是,在第 3 步中,我在读取之前一次又一次地打开内存!我认为这是多余的行为。

如何只打开一次就可以多次阅读?

实际上 open 命令在性能方面非常昂贵,事实证明这是我的应用程序的瓶颈。

最佳答案

想法应该是只打开共享资源(在本例中为内存)一次,并重复使用相同的句柄/变量/对象来一次又一次地访问它。

以下任何一种方法都可以:

  1. 如果所有访问都在一个函数中,请使用具有局部作用域的变量来维持共享内存的生命周期。此外,如果该方法有其他不需要访问共享资源的语句,资源本身可以包含在一对{ }中,以确保函数范围内的本地范围。<

或者,same 可以保存为指针,并在函数中传递,以防工作流涉及调用多个使用共享资源的方法。

  1. 将共享资源包装成对象(或指针)作为类的成员变量。可以创建所述类只是为了管理共享内存,或者使用资源的现有类可以取得所有权,具体取决于设计。

关于c++ - 我可以多次访问 boost::interprocess::managed_shared_memory 而无需一次又一次地打开它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26301398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com