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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Межпотоковое хранилище на основе QHash или QMap  (Прочитано 4874 раз)
TaIRou
Гость
« : Октябрь 29, 2012, 19:33 »

Ребят, нужно сделать межпотоковое хранилище данных на основе какого-нибудь контейнера (потоки могут читать данные, но они могут периодически обновляться), таким образом, чтобы данные были доступны и из gui-потока. Какие способы организации такого хранилища наиболее разумны в Qt?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Октябрь 29, 2012, 20:20 »

По-простому - контейнер (подходящий по задаче) + QReadWriteLock
Записан
TaIRou
Гость
« Ответ #2 : Октябрь 30, 2012, 20:01 »

а какие +/- у QThreadStorage, примеров с его использованием в examples я не нашел. А из того, что написано в help не очень понятно нужно ли к нему дополнительно лепить mutex'ы?

вот код из справки, вроде несложная обертка
Код:
QThreadStorage<QCache<QString, SomeClass> *> caches;

 void cacheObject(const QString &key, SomeClass *object)
 {
     if (!caches.hasLocalData())
         caches.setLocalData(new QCache<QString, SomeClass>);

     caches.localData()->insert(key, object);
 }

 void removeFromCache(const QString &key)
 {
     if (!caches.hasLocalData())
         return;

     caches.localData()->remove(key);
 }
« Последнее редактирование: Октябрь 30, 2012, 20:05 от TaIRou » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Октябрь 30, 2012, 20:13 »

а какие +/- у QThreadStorage, примеров с его использованием в examples я не нашел. А из того, что написано в help не очень понятно нужно ли к нему дополнительно лепить mutex'ы?

вот код из справки, вроде несложная обертка
QThreadStorage - это "наоборот" того что нужно "ребяту" Улыбающийся Он хранит "личные" данные для каждой нитки, т.е. сохраненные в одной недоступны для другой
Записан
TaIRou
Гость
« Ответ #4 : Октябрь 30, 2012, 20:22 »

Что-то как-то больно мудрено, а когда такое может пригодится то вообще?)
Как-то сразу в голову и не приходит... правда это к делу отношения не имеет, но все-таки
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Октябрь 30, 2012, 20:29 »

Что-то как-то больно мудрено, а когда такое может пригодится то вообще?)
Как-то сразу в голову и не приходит... правда это к делу отношения не имеет, но все-таки
Когда QThreadStorage (конкректно этот класс) может пригодиться не скажу - не пользовал. А вообще создание "своих" данных для каждой нитки - основной метод распараллеливания, мутексы то так, поляпать когда думать неохота или нечем
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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