我需要使用一箇舊的C++項目,其中每個進程都將相同的數據加載到內存中。這是隻讀的,每個進程都有完全相同的數據副本。最近服務已經開始顛簸它運行的系統。如何創建可隨時間擴展的共享內存區域?
我正在評估可以對此進行更改的方式,我認爲boost interprocess
庫非常適合我的用例。我考慮的另一件事是使用外部數據存儲,但由於延遲,我不太願意使用它。
我看了一下boost
apis,他們似乎要求我們指定共享內存區域的大小。在我的情況下,隨着時間的推移,需要加載的數據量不斷增加。這個共享內存是否可調整大小?
也可以在類似的情況下自由地對該問題或boost interprocess
提出替代建議。
不是說你不能這樣做,但是如何使用共享內存的進程知道它已經增長了?當您需要更多空間時,是否可以使用多個區域並添加更多區域?我完全不熟悉這個「增強」庫,所以我不能說。 – 2013-04-26 09:19:16
@MatsPetersson在最簡單的情況下,你可以使用類似於'vector'的東西來記錄它的'size'和'capacity'。 – 2013-04-26 09:21:17
它仍然會要求使用這些數據的應用程序「檢查它是否已經長大」或其他類似情況。我仍然認爲有幾種可能的解決方案,並非所有解決方案都與「增加」共享區域的大小有關。 – 2013-04-26 09:45:04