我正面臨一種情況,我需要從一個進程傳遞數百兆內存。現在我正在通過文件來做,而且速度太慢。 我想爲了讓它更快,這些文件應該直接寫入RAM,並可以從另一個進程訪問。沒有花哨的同步需要。一個進程將創建共享內存對象並將其填充數據。另一個進程會讀取並刪除它們。然而,我已經做了一個快速的研究,看起來你不能在Windows的RAM中共享內存 - 共享內存由文件或分頁文件支持。 boost :: interprocess的文檔證實了這一點。如果共享內存實現仍在使用磁盤,那麼速度在哪裏呢?是否有任何使用基於RAM的共享內存的C++庫?在C++中尋找Windows基於RAM的共享內存解決方案
編輯:我做了一些擴展閱讀: 1.從boost ::進程間文檔: 「作爲操作系統具有對文件內容與內存同步的內容,內存映射文件是不一樣快的共享內存「 2. from http://msdn.microsoft.com/en-us/library/ms810613.aspx: 」內存映射文件也可以同時被多個應用程序映射,這代表了兩個或多個進程在Windows NT中直接共享數據的唯一機制。「
Windows中的所有內存都由文件支持,就像任何虛擬內存操作系統一樣。文件由內存(文件系統緩存)支持。這使得你很可能看不到加速。這應該在RAM總線速度下移動,對於DDR2〜5GB/sec。 – 2011-06-02 02:49:05
@Hans:你是否說使用共享內存不會讓我有任何提高速度,而不是直接將數據保存到磁盤文件? – andriej 2011-06-02 08:21:57
也許提升Windows共享內存將成爲你的衚衕。這是非持續性的,如果這就是你的真正意思。 http://www.boost.org/doc/libs/1_35_0/doc/html/boost/interprocess/windows_shared_memory.html – 2013-06-01 15:59:57