аналог с помощью async awaitAll в цикле, но не уверен что это правильно.
Находил в Сети реализацию parallel Map, но она медленная.
https://jivimberg.io/blog/2018/05/04/parallel-map-in-kotlin/
Можно брать прямо джавовский если это Kotlin-JVM, будет отлично работать. Для корутин из коробки пока нет, но можно посмотреть https://github.com/Kotlin/kotlinx.coroutines/issues/1147 и взять какое-то из предложенных решений
А почему это не может быть правильно? Просто я помню Елизаров на одном из докладов говорил, что корутины это не про async, но если вы хотите - то пожалуйста. Вот поэтому такой способ
Для параллельного запуска самый простой вариант действительно async/awaitAll.
Не знаю, вдруг ошибаюсь. Вот тут - https://github.com/klesarev/blog-examples/blob/master/src/main/Lambda/Lambda.kt сравнивал способы, и метод с async получился самым быстрым. Подозрительно, но при запуске одновременно с parallelStream async быстрее его. Если запускать отдельно, то одинаково.
Parallel Stream будет выигрывать на нулевых операциях, потому что создание корутины не бесплатное. Но на любой реальной нагрузке будет уже примерно одинаково
Обсуждают сегодня