Здравствуйте, гость ( Вход | Регистрация )
|
DrWebber |
15.1.2015, 11:27
Сообщение
#1
|
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 9.5.2012 Пользователь №: 3370 Спасибо сказали: 0 раз(а) Репутация: 0
|
Всем привет. Возник вопрос как правильно организовать обработку данных в разных потоках?
Есть вот такой класс(схематично): Экземпляров этого класса может быть....ну допустим 10. Я понимаю, что рекомендуется использовать 1 QNetworkAccessManager в приложении, но мне нужно чтобы запросы отправлялись через разные прокси. Так же есть класс-генератор запросов, который вызывает функции sendGET и sendPOST, он работает в отдельном потоке QThread. Мне нужно чтобы данные, которые приходят в replyFinished обрабатывались параллельно, т.е. в данном случае в 10 потоков. Я пробовал создавать для каждого Requester свой QThread, но тогда я не мог вызывать из другого потока функции sendGET и sendPOST, вываливалось вот такое сообщение: Создавал вот так: Когда так делал, класс Requester выглядел немного по-другому - вся инициализация была в функции startInThread(). Собственно вопрос: как такое правильно реализовать? |
|
|
|
![]() |
|
lanz |
19.1.2015, 14:52
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8
|
Цитата это утверждение неверно. обработка может быть сложной и долгой. а запросы сами по себе могут быть мелкими, но поступать довольно быстро. Совершенно согласен, неверно выразился. Под разборкой я имел ввиду парсинг запросов и распределение по потребителям перед их обработкой. Цитата и один поток работает с сетью, а остальные заняты обработкой. но про реализацию подобных схем на Qt я ничего сказать не могу. На мой взгляд единственно правильная реализация, поскольку работа с сетью как правило IO-bound. В Qt реализуется очень просто через обычный producer-consumer, используя сигналы и слоты например для синхронной доставки. |
|
|
|
DrWebber Парсинг ответов QNetworkAccessManager в разных потоках 15.1.2015, 11:27
lanz А зачем вообще треды? Создайте 10 экземпляров в од... 16.1.2015, 9:19
DrWebber Цитата(lanz @ 16.1.2015, 9:19) А зачем во... 18.1.2015, 15:31
lanz ЦитатаВ том-то и дело, что мне нужно чтобы данные ... 18.1.2015, 16:58
Iron Bug Цитата(lanz @ 18.1.2015, 18:58) Если данн... 19.1.2015, 13:30![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 30.12.2025, 23:14 |