Всем привет. Интересует вопрос возможности создания динамический структур данных в разделяемой памяти, либо альтернативы этому.
Есть демон. Один main-процесс и несколько форкнутых воркеров. В качестве IPC используется разделяемая память. Через shmat выделяется кусок памяти, где хранятся общие используемые структуры. Все устраивает, кроме одного, нельзя использовать STL-контейнеры. Приходится делать все на обычных массивах и наступать на ограничения, которые связаны с этим.
Некоторые «workaround», которые пришли в голову:
- Использовать boost::ipc. Писать свои кастомные алокаторы.
- Не форкаться. Создавать треды, тогда контейнеры использовать можно, нужно лишь позаботиться об мьютексах и т.д. и т.п.
- Не использовать разделяемую память. Поставить тот же Redis и хранить все в нем.
Есть ли еще какие-то варианты в моем случае?
Заранее спасибо за ответы.