2014-10-10 51 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

相關問題