Viktor Qvarfordt
05/16/2019, 9:00 PMmyList.map { myCpuIntensiveTask(it) }
?elizarov
05/16/2019, 9:03 PMmyList.parallelStream().map { myCpuIntensiveTask(it) }.collect(Collectors.toList())
But we plan to provide simple, declaration and expressive API to do some like that with coroutines in the future, too.Viktor Qvarfordt
05/16/2019, 9:06 PMpakoito
05/16/2019, 9:10 PMelizarov
05/16/2019, 9:11 PMpakoito
05/16/2019, 9:16 PMelizarov
05/16/2019, 9:17 PMViktor Qvarfordt
05/16/2019, 9:19 PMelizarov
05/16/2019, 9:19 PMpakoito
05/16/2019, 9:22 PMelizarov
05/16/2019, 9:34 PMViktor Qvarfordt
05/16/2019, 9:34 PMmyList.map {
async { myCpuIntensiveTask(it) }
}.map {
it.await()
}
elizarov
05/16/2019, 9:36 PM.map { it.await() }
== .awaitAll()
. Otherwise, it is Ok, but there is no limit on concurrency in this solution, with potentially disastrous consequences at scale.Viktor Qvarfordt
05/16/2019, 9:37 PMelizarov
05/16/2019, 9:37 PMViktor Qvarfordt
05/16/2019, 9:38 PMelizarov
05/16/2019, 9:38 PMViktor Qvarfordt
05/16/2019, 9:38 PMelizarov
05/16/2019, 9:39 PMViktor Qvarfordt
05/16/2019, 9:40 PMelizarov
05/16/2019, 9:44 PMViktor Qvarfordt
05/16/2019, 9:46 PMsuspend fun <T, R> Iterable<T>.parallelMap(transform: (T) -> R): List<R> = withContext(Dispatchers.Default) {
map { async { transform(it) } }.awaitAll()
}