MBO писал(а):
А есть ли какой-то способ размножать потоки? Подходящая реализация - запуск фиксированного количества потоков, каждому из которых дается часть общего списка запросов и он свою часть выполняет последовательно, как описано выше для одного.
MBO писал(а):
Но первый при этом не прерывается, а ждет ответа от сервераMBO писал(а):
Вобще, я останавливаю поток и запрос для того, что бы можно было обработать предыдущий ответ в случае ошибки и отправить еще один (уже другой) запросСледует отличать:
- "в случае ошибки выполнить другой запрос" - это как написал
- "в случае ошибки перейти к следующему запросу" - это решается выше описанным перебором списка запросов.
Остается вопрос: в случае ошибки выполнить другой запрос, а если ошибки не произошло - что надо сделать? А если и этот другой запрос выполнился с ошибкой - что надо сделать? А если успешен?
MBO писал(а):
Можно ли вообще как-то посмотреть занятые и освобожденные программой ресурсы? А управлять ими средствами HiAsm?Любое "внешнее управление ресурсами" при той же логике будет приводить к тем же результатам.
И это не проблема HTTPClient. В HTTP_Get происходит ровно то же самое, просто ты не заглядывал внутрь. А там не стоит проверки на повторный запуск. Запустил первый запрос - он запустился в параллельном потоке и ожидает ответа сервера. А ты в это время запускаешь второй запрос. Проверки в компоненте нет, ты думаешь "вау, второй запрос пошел" (или думаешь компонент там внутри сам знает что ему надо отменить предыдущий?). И ждешь результатов второго запроса. А в этот момент там внутри проснулся первый запрос, о котором компонент уже забыл, и выдал событие onDownload. А ты думаешь что это событие с результатом второго запроса. А если пять запросов одновременно выполнить - какое по порядку событие данные какого по порядку запроса будет выдавать?