我可以多次访问 boost::interprocess::managed_shared_memory 而不会一次又一次地打开它吗?

Cin*_*out 2 c++ boost boost-interprocess

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

以下是采取的步骤:

  1. a) Create memory.
    
    Run Code Online (Sandbox Code Playgroud)
  2. a) Open memory. 
    b) Write to memory
    
    Run Code Online (Sandbox Code Playgroud)
  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!
    
    Run Code Online (Sandbox Code Playgroud)

现在,问题是,在第 3 步中,我在阅读之前一遍又一遍地打开记忆!我认为这是多余的行为。

如何通过只打开一次来多次阅读?

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

Cin*_*out 5

这个想法应该是只打开共享资源(在这种情况下为内存)一次,并重复使用相同的句柄/变量/对象来一次又一次地评估它。

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

  1. 如果所有访问都在单个函数中,请使用具有局部作用域的变量来维护共享内存的生命周期。并且,如果该方法有其他不需要访问共享资源的语句,可以将资源本身封装在一对中,{ }以保证函数作用域内的局部作用域。

或者,可以将相同的内容保存为指针,并在工作流涉及调用使用共享资源的多个方法的情况下传递函数。

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