我一直渴望一個STLish容器,我可以把它放到共享內存段或內存映射文件中。任何人都有一個良好的C++共享內存容器?
我已經考慮過使用自定義分配器和放置new將常規STL容器放到共享內存段中。 (像這樣ddj article)。問題是STL容器將在內部擁有指向它們擁有的內存的指針。因此,如果共享內存段或內存映射文件加載到不同的基址(可能在後續運行或第二個進程中),則內部指針突然無效。就我所知,自定義分配器方法僅適用於如果您始終可以將內存段映射到您的進程中相同的地址。至少在內存映射文件方面,如果您只是讓系統將其映射到任何感覺上,我都有很多經驗。
我對如何做到這一點有一些想法,但是如果其他人已經完成了這項工作(這是我,懶惰),我想避免它。
由於最佳鎖定策略是高度依賴於應用程序的,我目前正在退出討論。
我使用個人經驗支持這個答案。使用IPC製作的在線指南輕而易舉! www.boost.org/doc/libs/1_36_0/doc/html/interprocess/quick_guide.html www.boost.org/doc/libs/1_36_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_file – pestophagous 2008-11-06 16:38:17