arrow-fx / arrow.fx.extensions / IOConcurrent / parTupledN

parTupledN

open fun <A, B> parTupledN(ctx: CoroutineContext, fa: Kind<ForIO, A>, fb: Kind<ForIO, B>): IO<Tuple2<A, B>>

Map two tasks in parallel within a new F on ctx.

import arrow.Kind
import arrow.core.Tuple2
import arrow.fx.IO
import kotlinx.coroutines.Dispatchers
import arrow.fx.typeclasses.Concurrent
import arrow.fx.extensions.io.concurrent.concurrent
import arrow.fx.fix

fun main(args: Array<String>) {
  fun <F> Concurrent<F>.example(): Kind<F, Tuple2<String, String>> {
  //sampleStart
    val result = parTupledN(
      Dispatchers.Default,
      effect { "First one is on ${Thread.currentThread().name}" },
      effect { "Second one is on ${Thread.currentThread().name}" }
    )
  //sampleEnd
  return result
  }

  IO.concurrent().example().fix().unsafeRunSync().let(::println)
}

Parameters

ctx - CoroutineContext to execute the source F on.

fa - value to parallel map

fb - value to parallel map

Return F with the result of function fa and fb.

See Also

racePair

open fun <A, B, C> parTupledN(ctx: CoroutineContext, fa: Kind<ForIO, A>, fb: Kind<ForIO, B>, fc: Kind<ForIO, C>): IO<Tuple3<A, B, C>>

See Also

parMapN

Do you like Arrow?

Arrow Org
<