Scala と ZIO による並行処理
こんにちは、 @kz_morita です。
今回は、Scala 向けの非同期処理ライブラリである ZIO について主に並行処理の使い方についてメモします。
主な並行処理 ZIO を用いて、並行処理のためのメソッドを以下に列挙します。
ZIO#zip, ZIO#zipPar ZIO#zipWith, ZIO#zipWithPar ZIO#tupled, ZIO#tupledPar ZIO#foreach, ZIO#foreachPar ZIO#reduceAll, ZIO#reduceAllPar ZIO#mergeAll, ZIO#mergeAllPar suffix に Par をつけると並列実行となります。
以下のような ZIO を返すメソッドで考えます。
private def numSeq(): ZIO[Clock, Throwable, Seq[Int]] = for { _ <- ZIO.effect(println("numSeq start")) _ <- zio.clock.sleep(1.seconds) _ <- ZIO.effect(println("numSeq end")) } yield Seq(1,2,3,4,5) private def stringSeq(): ZIO[Clock, Throwable, Seq[String]] = for { _ <- ZIO.effect(println("stringSeq start")) _ <- zio.clock.sleep(1.seconds) _ <- ZIO.