Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: RedDog от Октябрь 23, 2019, 21:19



Название: QSharedMemory и контейнеры
Отправлено: RedDog от Октябрь 23, 2019, 21:19
В приложении активно используются QHash/Map/Vector и т.д.
Возникла идея обрабатывать их с нескольких запущенных копий.
Есть ли способы в QSharedMemory их накопировать, а читать без временных копий в конкретный инстанс приложения?


Название: Re: QSharedMemory и контейнеры
Отправлено: ssoft от Октябрь 24, 2019, 05:02
Контейнеры Qt не позволяют управлять размещением внутренних элементов в определенной области памяти через какой-нибудь allocator. Самое большее что можно сделать, это для QByteArray задать setRawData.
Если есть потребность в использовании одних и тех же данных в разных инстансах приложения, то это можно сделать с использованием std контейнеров.


Название: Re: QSharedMemory и контейнеры
Отправлено: Igors от Октябрь 24, 2019, 06:33
В приложении активно используются QHash/Map/Vector и т.д.
Возникла идея обрабатывать их с нескольких запущенных копий.
Есть ли способы в QSharedMemory их накопировать, а читать без временных копий в конкретный инстанс приложения?
Все равно нужна "синхронизация", напр если кто-то изменил содержимое контейнера, то другие должны об этом узнать. Ну и локи по записи. Поэтому стремиться к "прямому" отображению не стоит, себе дороже


Название: Re: QSharedMemory и контейнеры
Отправлено: RedDog от Октябрь 24, 2019, 18:45
Нашел в бусте такую работу с контейнерами. В принципе не важно, что они будут не Qt-шные.
Синхронизация само собой будет.