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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QNetworkManager внутри QtConcurrent:map  (Прочитано 2381 раз)
rudireg
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« : Май 09, 2020, 10:36 »

Привет.
Имеем класс Worker который унаследован от QObject в котором идет работа с QNetworkAccessManager
Так же есть класс Master который запускает работу  Worker через вызов QtConcurrent:map

Заметил такую ситуацию, что я не получаю ответ от QNetworkAccessManager через сигнал QNetworkReply::readyRead
Но... стоит мне внутри метода Worker  реализовать  QEventLoop
Код:
QNetworkReply *reply = this->manager->get(request);
QEventLoop loop;
loop.exec();
То ответ от  QNetworkAccessManager  получаю.

Выходит, из этой документации https://doc.qt.io/qt-5/threads-technologies.html
Только QThread способен на Thread can run an event loop

То есть внутри потока, (созданный QtConcurrent:map)  нет цикла обработки событий без моего QEventLoop и поток просто уничтожается по достижении конца метода...
Походу для моего случая лучше испольлзовать moveToThread
« Последнее редактирование: Май 09, 2020, 11:05 от rudireg » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #1 : Май 09, 2020, 16:06 »

QNAM уже использует треды внутри, нет никакой нужды его параллелить снаружи.
Записан
rudireg
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« Ответ #2 : Май 09, 2020, 16:14 »

QNAM уже использует треды внутри, нет никакой нужды его параллелить снаружи.
В моем случае есть нужда, использование QNAM это лишь верхушка айсберга. Логика подразумевает неоднократный вызов QNAM и обработка его ответа, запросы разные, и на обработку каждого ответа своя логика...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Май 15, 2020, 20:01 »

QNAM по умолчанию создает 6 потоков под свои нужды. Как было сказано выше, не надо его совать еще в один поток.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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