Russian Qt Forum
Апрель 20, 2024, 13:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSharedMemory и контейнеры  (Прочитано 5860 раз)
RedDog
Частый гость
***
Offline Offline

Сообщений: 221


Просмотр профиля
« : Октябрь 23, 2019, 21:19 »

В приложении активно используются QHash/Map/Vector и т.д.
Возникла идея обрабатывать их с нескольких запущенных копий.
Есть ли способы в QSharedMemory их накопировать, а читать без временных копий в конкретный инстанс приложения?
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 579


Просмотр профиля
« Ответ #1 : Октябрь 24, 2019, 05:02 »

Контейнеры Qt не позволяют управлять размещением внутренних элементов в определенной области памяти через какой-нибудь allocator. Самое большее что можно сделать, это для QByteArray задать setRawData.
Если есть потребность в использовании одних и тех же данных в разных инстансах приложения, то это можно сделать с использованием std контейнеров.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Октябрь 24, 2019, 06:33 »

В приложении активно используются QHash/Map/Vector и т.д.
Возникла идея обрабатывать их с нескольких запущенных копий.
Есть ли способы в QSharedMemory их накопировать, а читать без временных копий в конкретный инстанс приложения?
Все равно нужна "синхронизация", напр если кто-то изменил содержимое контейнера, то другие должны об этом узнать. Ну и локи по записи. Поэтому стремиться к "прямому" отображению не стоит, себе дороже
Записан
RedDog
Частый гость
***
Offline Offline

Сообщений: 221


Просмотр профиля
« Ответ #3 : Октябрь 24, 2019, 18:45 »

Нашел в бусте такую работу с контейнерами. В принципе не важно, что они будут не Qt-шные.
Синхронизация само собой будет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.