簡體   English   中英

寫入以增強共享內存

[英]Writing to boost shared memory

它一定是直截了當的答案,但我沒有找到任何地方怎么做...

我已經使用boost IPC系統成功創建了一個共享內存段,如下例所示:

boost::interprocess::managed_shared_memory segment(boost::interprocess::create_only, "MySharedMemory", 65536);

sharedData = segment.construct<MyType>("Test")(0, 0.2);

我也能夠從不同的過程中讀取值。 我無法理解的是如何編輯此變量的值(如果我允許將“Test”稱為變量)並從其他進程讀取它們。 我想循環並寫下這些值。

謝謝

這不是一個好主意,因為沒有辦法在共享內存塊上強制執行並發。 以同樣的方式,需要保護共享資源免受多個線程相互沖突(例如,使用互斥或​​臨界區),對於共享內存塊也是如此。

如果沒有使用命名管道之類的額外信令機制,則無法安全地發信號通知共享內存塊

  • 可供閱讀
  • 可寫
  • 更新

如果使用read_write標志創建內存塊,則會設置正確的Windows權限。 boost文檔中的示例顯示了這一點。

using boost::interprocess;
shared_memory_object shm_obj
   (open_only                    //only open
   ,"shared_memory"              //name
   ,read_write                   //read-write mode
   );

正如@Konrad建議的那樣,使用共享內存如此松散並不是一件好事。 話雖這么說,Boost確實提供了進程間同步實用程序,它們與傳統上在線程之間使用的實用程序大致相同。

這個文檔的頁面一個很好的閱讀(特別是條件部分),看看是否可以讓你知道應該瞄准什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM