![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_Николай_* |
![]()
Сообщение
#1
|
Гости ![]() |
1. Можно ли использовать контейнерные классы (QMap, QValueVector, QValueList) при многопоточном программировании для обмена данными между потоками?
2. Если возможно использовать, то достаточно ли все операции с разделяемым контейнером обвернуть мьютексом? Или его ещё нужно объявлять как volitale? Или ещё что-то? 3. Если для второго потока сделать копию контейнера первого потока через QDeepCopy, позволит ли это безопасно работать с этими контейнерами в двух разных потоках? 4. Если в том же QValueList использовать объекты типа какой-то структуры, где один из элементов этой структуры является QString, то при копировании QValueList используя QDeepCopy, можно ли будет безопасно работать с этими контейнерами в двух разных потоках? Или нужно копировать по элементно и QString переписывать через QDeepCopy. Использую Qt 3.3.3 соответственно, хотел бы получить ответы для это версии. |
|
|
DEADHUNT |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
используй мьютексы и lock guard`s
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Николай, если речь идёт о предыдущей мажорной версии (Qt 3), то указывайте это и в теле сообщения и в заголовке. Т.к. немного пользователей её знает и это позволит сократить ошибочные сообщения
|
|
|
Гость_Николай_* |
![]()
Сообщение
#4
|
Гости ![]() |
|
|
|
Гость_Николай_* |
![]()
Сообщение
#5
|
Гости ![]() |
|
|
|
DEADHUNT |
![]()
Сообщение
#6
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Алексей1153 |
![]()
Сообщение
#7
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Наверное, имеются в виду QReadLocker и QWriteLocker
Если создать объект этого класса с указанием объекта синхронизации, то lock вызывается сразу, а unlock обязательно вызовется автоматом по выходу из области видимости QReadLocker или QWriteLocker (в деструкторах оных). |
|
|
Гость_Николай_* |
![]()
Сообщение
#8
|
Гости ![]() |
Не могу понять, а использование только мьютекса не достаточно?
|
|
|
Алексей1153 |
![]()
Сообщение
#9
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Достаточно, но работать будет, наверное, медленнее - он для межпроцессорных синхронизаций предназначен
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 17.7.2025, 20:03 |