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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Мониторинг асинхронных задач  (Прочитано 3643 раз)
vregess
Гость
« : Февраль 25, 2015, 20:40 »

Внутри программы есть некий сервис, который крутится в отдельном потоке. Допустим он загружает картинки в фоне или что-то тянет из сети. Есть несколько клиентов, которые отправляют асинхронные запросы сервису, а он в свою очередь должен отправлять готовые данные (картинку) запросившему их клиенту.

Основная идея в том, что сервис должен различать клиентов, как-то оповещать их о состоянии задачи и передавать результат.

Было бы не плохо иметь что-то похожее на QFuture/QFutureWatcher, жалко их нельзя в собственных целях использовать. Реализовать свой QFuture или есть более другие решения?

Хотелось бы услышать мнения.

PS если уже обсуждалось, ткните ссылкой.
Записан
nwnclv
Гость
« Ответ #1 : Февраль 26, 2015, 11:05 »

Цитировать
Основная идея в том, что сервис должен различать клиентов,
ну и в чем проблема скормить с заданием ID какой-нибудь?
Или скормить объект, которому потом сервис вышлет сигнал, или зарегистрировать некий коллбек, который сервис дернет по окончанию обработки конкретного задания. Или, если тот, кто ставит задание сервису должен синхронно его ждать, то очередь с ожиданием. ... Вариантов много. выбирай какой больше подходит.

Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Февраль 26, 2015, 15:25 »

я бы посоветовал пул потоков для такой задачи, где несколько клиентов что то запрашивают и ожидают получить в ответ
Записан
vregess
Гость
« Ответ #3 : Февраль 26, 2015, 21:28 »

ну и в чем проблема скормить с заданием ID какой-нибудь?
Или скормить объект, которому потом сервис вышлет сигнал, или зарегистрировать некий коллбек, который сервис дернет по окончанию обработки конкретного задания.
Сам пока думаю о неком прокси объекте, который передавать сервису. А сервис будет через него слать сигналы клиенту (вот что-то типа QFuture и получается по сути).
Проблемы нет, как раз и хотел больше конкретики, как реализовать.

я бы посоветовал пул потоков для такой задачи, где несколько клиентов что то запрашивают и ожидают получить в ответ

В моем случае лучше чтобы сервис крутился все время, а не временно помещать задачу в поток, да и в главном потоке он тоже может работать. Например, сервис с использованием QNAM может работать асинхронно в главном потоке.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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