Нет, zip и корутины сами по себе не гарантируют параллельное выполнение сетевых запросов. Они позволяют выполнять запросы асинхронно и ждать их завершения, объединяя результаты.
Параллельное выполнение зависит от:
Dispatchers.IO или другого подходящего диспетчера, который может обрабатывать несколько потоков.Пример асинхронного, потенциально параллельного выполнения:
kotlin
В этом примере ключами к потенциальному параллелизму являются:
async: Запускает каждую задачу как отдельную асинхронную операцию.Dispatchers.IO: Выполняет задачи на пуле потоков, подходящем для I/O операций.await() для Deferred-объектов, полученных от async, по сути, выполняет роль "зипования" результатов, дожидаясь завершения обеих задач перед тем, как продолжить выполнение. Если Dispatchers.IO настроен с несколькими потоками, задачи могут выполняться параллельно. Без async и подходящего диспетчера (withContext(Dispatchers.IO)) они выполнялись бы последовательно на пуле потоков диспетчера.