Andrew Gazelka
10/01/2019, 1:02 AMgildor
10/01/2019, 1:29 AMAndrew Gazelka
10/01/2019, 1:35 AM{numbers from sequence} -> {split into subsequeces} -> {do computation in parallel on each sub sequence}
gildor
10/01/2019, 1:47 AMAndrew Gazelka
10/01/2019, 1:48 AMgildor
10/01/2019, 1:50 AMSequence.chunked
, which emits list of required sizeAndrew Gazelka
10/01/2019, 1:53 AM[2, inf)
gildor
10/01/2019, 1:53 AMchunked(SIZE)
doesn’t look complicatedAndrew Gazelka
10/01/2019, 1:53 AMgildor
10/01/2019, 1:55 AMAndrew Gazelka
10/01/2019, 1:56 AMgildor
10/01/2019, 1:58 AMAndrew Gazelka
10/01/2019, 1:58 AMprivate fun primes() {
val threads = 6
val infSequence = generateSequence(2) { it + 1 }
runBlocking {
for (i in 0 until threads) {
launch {
infSequence.filter { it % threads == i }
.filter { isPrime(it) }
.forEach { println(it) }
}
}
}
}
ehgildor
10/01/2019, 1:58 AMAndrew Gazelka
10/01/2019, 1:59 AMgildor
10/01/2019, 1:59 AMAndrew Gazelka
10/01/2019, 2:00 AMgildor
10/01/2019, 2:03 AMisPrime
suspend function that runs on particular dispatcher with target parallelismAndrew Gazelka
10/01/2019, 2:04 AMisPrime
be suspending… it doesn’t need to suspend?…gildor
10/01/2019, 2:05 AMAndrew Gazelka
10/01/2019, 2:05 AMgildor
10/01/2019, 2:06 AMisPrime
, but you split the list and use flatMapConcatDennis Schröder
10/01/2019, 7:31 AMgildor
10/01/2019, 7:33 AMMatteo Mirk
10/01/2019, 8:10 AM