All Downloads are FREE. Search and download functionalities are using the official Maven repository.

turbolift.io.CountDownLatch.scala Maven / Gradle / Ivy

The newest version!
package turbolift.io
import turbolift.{!!, ComputationCases => CC}
import turbolift.effects.IO
import turbolift.internals.engine.concurrent.util.CountDownLatchImpl


sealed trait CountDownLatch:
  final def await: Unit !! IO = CC.intrinsic(_.intrinsicAwaitCountDownLatch(this))

  final def release: Unit !! IO = !!.impure(unsafeRelease())

  def unsafeRelease(): Unit

  private[turbolift] final def asImpl: CountDownLatchImpl = asInstanceOf[CountDownLatchImpl]


object CountDownLatch:
  private[turbolift] trait Unsealed extends CountDownLatch

  def apply(initial: Int): CountDownLatch !! IO = create(initial)
  def create(initial: Int): CountDownLatch !! IO = !!.impure(new CountDownLatchImpl(initial))




© 2015 - 2024 Weber Informatics LLC | Privacy Policy