crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> (Qt 3.3.3) Контейнеры и многопоточность
Гость_Николай_*
сообщение 11.7.2010, 20:05
Сообщение #1





Гости








    


1. Можно ли использовать контейнерные классы (QMap, QValueVector, QValueList) при многопоточном программировании для обмена данными между потоками?

2. Если возможно использовать, то достаточно ли все операции с разделяемым контейнером обвернуть мьютексом? Или его ещё нужно объявлять как volitale? Или ещё что-то?

3. Если для второго потока сделать копию контейнера первого потока через QDeepCopy, позволит ли это безопасно работать с этими контейнерами в двух разных потоках?

4. Если в том же QValueList использовать объекты типа какой-то структуры, где один из элементов этой структуры является QString, то при копировании QValueList используя QDeepCopy, можно ли будет безопасно работать с этими контейнерами в двух разных потоках? Или нужно копировать по элементно и QString переписывать через QDeepCopy.

Использую Qt 3.3.3 соответственно, хотел бы получить ответы для это версии.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 11.7.2010, 20:50
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


используй мьютексы и lock guard`s
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.7.2010, 20:54
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Николай, если речь идёт о предыдущей мажорной версии (Qt 3), то указывайте это и в теле сообщения и в заголовке. Т.к. немного пользователей её знает и это позволит сократить ошибочные сообщения
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Николай_*
сообщение 12.7.2010, 13:38
Сообщение #4





Гости








    


Цитата(DEADHUNT @ 11.7.2010, 20:50) *
используй мьютексы и lock guard`s


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Николай_*
сообщение 12.7.2010, 13:39
Сообщение #5





Гости








    


Цитата(DEADHUNT @ 11.7.2010, 20:50) *
используй мьютексы и lock guard`s


А можно поподробней о lock guard`s
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 12.7.2010, 15:05
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


http://www.boost.org/doc/libs/1_43_0/doc/h...ocks.lock_guard
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 12.7.2010, 15:11
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Наверное, имеются в виду QReadLocker и QWriteLocker

Если создать объект этого класса с указанием объекта синхронизации, то lock вызывается сразу, а unlock обязательно вызовется автоматом по выходу из области видимости QReadLocker или QWriteLocker (в деструкторах оных).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Николай_*
сообщение 19.7.2010, 17:56
Сообщение #8





Гости








    


Не могу понять, а использование только мьютекса не достаточно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 19.7.2010, 18:00
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Достаточно, но работать будет, наверное, медленнее - он для межпроцессорных синхронизаций предназначен
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 11:26