![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
DrWebber |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 9.5.2012 Пользователь №: 3370 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет. Возник вопрос как правильно организовать обработку данных в разных потоках?
Есть вот такой класс(схематично):
Экземпляров этого класса может быть....ну допустим 10. Я понимаю, что рекомендуется использовать 1 QNetworkAccessManager в приложении, но мне нужно чтобы запросы отправлялись через разные прокси. Так же есть класс-генератор запросов, который вызывает функции sendGET и sendPOST, он работает в отдельном потоке QThread. Мне нужно чтобы данные, которые приходят в replyFinished обрабатывались параллельно, т.е. в данном случае в 10 потоков. Я пробовал создавать для каждого Requester свой QThread, но тогда я не мог вызывать из другого потока функции sendGET и sendPOST, вываливалось вот такое сообщение:
Создавал вот так:
Когда так делал, класс Requester выглядел немного по-другому - вся инициализация была в функции startInThread(). Собственно вопрос: как такое правильно реализовать? |
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Если данные у вас обрабатываются так долго, что один поток не успевает их разобрать между приходами запросов, то 10 потоков вас не спасут, все время будет копится очередь необработанных запросов. это утверждение неверно. обработка может быть сложной и долгой. а запросы сами по себе могут быть мелкими, но поступать довольно быстро. распараллеливание обработки - совершенно нормальная практика. просто обычно создаются очередь входящих и очередь исходящих сообщений, если это один коннект. и один поток работает с сетью, а остальные заняты обработкой. но про реализацию подобных схем на Qt я ничего сказать не могу. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 10.4.2025, 21:21 |