![](/img/trans.png)
[英]Writing a binary archive into a shared memory with BOOST::serialization
[英]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.