2014-10-10 31 views
1

我正在使用boost::interprocess::managed_shared_memory来创建跨进程共享的内存。我可以多次访问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命令在性能方面相当昂贵,而且这在我的应用程序中被证明是一个瓶颈。

+2

难道你不能一次又一次地打开它吗?你的代码是什么样的,究竟是什么错误? – 2014-10-10 14:14:21

+0

我试图在不打开的情况下使用它,但后来我不允许访问内存! – CinCout 2014-10-10 16:37:23

回答

1

为简洁起见,许多示例在main函数中都有managed_shared_memory。

但是,您应该使其成为相关类的成员(负责管理共享内存映射的生存期)。

当然,你可以将它作为一个局部变量保存在main中,但是你会被强制在任何函数调用中传递它。 (我做不是建议让它成为一个全局变量,或者是一个单身人士)。

+0

即使我想通过使它成为一个类的成员变量,但我不确定这是否会工作!将在星期一尝试!谢谢! – CinCout 2014-10-10 16:40:46

+0

作品成功:) 谢谢:) – CinCout 2014-10-13 09:28:55

+1

胡跳。感谢您的反馈 – sehe 2014-10-13 09:30:32

相关问题