簡體   English   中英

C ++-在多個進程中使用共享內存

[英]c++ - using shared memory with multiple processes

我正在使用Boost,特別是shared_memory_objectmapped_region來實現基本的IPC(共享內存)。

現在,我想擴展程序,以便可以從多個單獨的進程訪問共享內存,以便不僅讀取數據,還可以更改數據。

我想到的第一件事是這些過程之間的同步。 實際上,要求是在這些進程中的任何一個願意訪問該對象時鎖定共享內存,但是由於資源是在那些程序的范圍之外定義的,該怎么辦?

您能否先告訴我這個要求是否已經隱式實現到那些類中了? 如果不能,請詳細說明如何實現這一目標?

您能否先告訴我這個要求是否已經隱式實現到那些類中?

不,共享內存中沒有內置的同步,因為在內存級別上尚不清楚其上哪些操作組必須是原子操作。 但是boost :: interprocess中可以使用同步原語。

如果不能,請詳細說明如何實現這一目標?

您需要一個互斥鎖 您的問題看起來像是讀者-作家的問題,因此upgradable_mutex可能是更好的解決方案,因為它支持共享的讀取鎖和排他的寫入鎖。 但是您可能會發現boost :: interprocess中的其他同步原語也很有用。

暫無
暫無

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

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