Ответ
Для параллельного выполнения задач в Coroutines можно использовать async в сочетании с awaitAll.
suspend fun fetchDataParallel() = coroutineScope {
val deferred1 = async { fetchData1() }
val deferred2 = async { fetchData2() }
val results = awaitAll(deferred1, deferred2) // [result1, result2]
}
Ключевые моменты:
asyncзапускает корутину и возвращаетDeferred<T>.awaitAllожидает завершения всехDeferred.- Работает внутри
coroutineScope, чтобы отменить все дочерние корутины при ошибке.
Если нужно ограничить параллелизм, используйте Dispatchers.IO или Semaphore.