Как сделать параллельный flatMap в Kotlin? - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужно сделать параллельную плоскую карту. Допустим, у меня есть этот код:

val coll: List<Set<Int>> = ...
coll.flatMap{set -> setOf(set, set + 1)}

Мне нужно что-то вроде этого:

coll.pFlatMap{set -> setOf(set, set + 1)} // parallel execution

1 Ответ

0 голосов
/ 14 сентября 2018

Kotlin не предоставляет никаких потоков из коробки. Но вы можете использовать kotlinx.coroutines, чтобы сделать что-то вроде этого:

val coll: List<Set<Int>> = ...
val result = coll
 .map {set -> 
    // Run each task in own coroutine,
    // you can limit concurrency using custom coroutine dispatcher
    async { doSomethingWithSet(set) } 
 }
 .flatMap { deferred -> 
    // Await results and use flatMap
    deferred.await() // You can handle errors here
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...