![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
DrWebber |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 9.5.2012 Пользователь №: 3370 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет. Возник вопрос как правильно организовать обработку данных в разных потоках?
Есть вот такой класс(схематично):
Экземпляров этого класса может быть....ну допустим 10. Я понимаю, что рекомендуется использовать 1 QNetworkAccessManager в приложении, но мне нужно чтобы запросы отправлялись через разные прокси. Так же есть класс-генератор запросов, который вызывает функции sendGET и sendPOST, он работает в отдельном потоке QThread. Мне нужно чтобы данные, которые приходят в replyFinished обрабатывались параллельно, т.е. в данном случае в 10 потоков. Я пробовал создавать для каждого Requester свой QThread, но тогда я не мог вызывать из другого потока функции sendGET и sendPOST, вываливалось вот такое сообщение:
Создавал вот так:
Когда так делал, класс Requester выглядел немного по-другому - вся инициализация была в функции startInThread(). Собственно вопрос: как такое правильно реализовать? |
|
|
![]() |
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Цитата это утверждение неверно. обработка может быть сложной и долгой. а запросы сами по себе могут быть мелкими, но поступать довольно быстро. Совершенно согласен, неверно выразился. Под разборкой я имел ввиду парсинг запросов и распределение по потребителям перед их обработкой. Цитата и один поток работает с сетью, а остальные заняты обработкой. но про реализацию подобных схем на Qt я ничего сказать не могу. На мой взгляд единственно правильная реализация, поскольку работа с сетью как правило IO-bound. В Qt реализуется очень просто через обычный producer-consumer, используя сигналы и слоты например для синхронной доставки. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 15.7.2025, 12:09 |