我的問題是關於使用Boost.Interprocess,在單個寫入器進程和多個讀取器進程的上下文中增加內存映射區域。 使用作者的managed_mapped_file::grow
是否可以,假設讀者不需要更新地圖尺寸的更改是可以接受的?我的假設是,讀者的地圖將保持有效,然後當我需要他們從作者處獲取最新更改時,我可以用更新的大小重新映射讀者。它是否正確?Growing Boost.Interprocess內存映射文件與單個寫入器
文檔的Growing managed segments部分表示:
一旦管理的段中創建管理的段不能生長。這個限制並不容易解決:每個連接到被管理部分的進程都需要停止,並通知新的大小,他們需要重新映射被管理部分並繼續工作。 [...]
這讓我覺得我可以grow
只要我很好,讀者不馬上更新。然而,文件繼續說:
另一方面,Boost.Interprocess提供離線分段增長。這是什麼意思?如果沒有進程映射受管段,則可以擴展段。如果應用程序可以找到一個沒有附加進程的時刻,它可以增長或縮小以適應被管理的細分市場。
managed_mapped_file
也提供了類似的功能來增長或管理文件。請記住,在執行增長/縮小過程時,不應該修改文件/共享內存。否則,被管段將被損壞。
這讓我覺得我不能做我想做的事,但我不明白爲什麼它不起作用。
你想談談一些關於細分管理員與共享內存的更多寵物嗎?我還有幾個警告,你可能想知道做出設計決定:) – sehe
是的,我非常想知道這些警告。 –
[過來](https://chat.stackoverflow.com/rooms/10/loungec)如果你有時間 – sehe