Packages

abstract class Deferred[F[_], A] extends DeferredSource[F, A] with DeferredSink[F, A]

A purely functional synchronization primitive which represents a single value which may not yet be available.

When created, a Deferred is empty. It can then be completed exactly once, and never be made empty again.

get on an empty Deferred will block until the Deferred is completed. get on a completed Deferred will always immediately return its content.

complete(a) on an empty Deferred will set it to a, notify any and all readers currently blocked on a call to get, and return true. complete(a) on a Deferred that has already been completed will not modify its content, and return false.

Albeit simple, Deferred can be used in conjunction with Ref to build complex concurrent behaviour and data structures like queues and semaphores.

Finally, the blocking mentioned above is semantic only, no actual threads are blocked by the implementation.

Source
Deferred.scala
Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Deferred
  2. DeferredSink
  3. DeferredSource
  4. Serializable
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Deferred()

Abstract Value Members

  1. abstract def complete(a: A): F[Boolean]

    If this Deferred is empty, sets the current value to a, and notifies any and all readers currently blocked on a get.

    If this Deferred is empty, sets the current value to a, and notifies any and all readers currently blocked on a get. Returns true.

    If this Deferred has already been completed, returns false.

    Satisfies: Deferred[F, A].flatMap(r => r.complete(a) *> r.get) == a.pure[F]

    Definition Classes
    DeferredSink
  2. abstract def get: F[A]

    Obtains the value of the Deferred, or waits until it has been completed.

    Obtains the value of the Deferred, or waits until it has been completed. The returned value may be canceled.

    Definition Classes
    DeferredSource
  3. abstract def tryGet: F[Option[A]]

    Obtains the current value of the Deferred, or None if it hasn't completed.

    Obtains the current value of the Deferred, or None if it hasn't completed.

    Definition Classes
    DeferredSource

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. def mapK[G[_]](f: ~>[F, G]): Deferred[G, A]

    Modify the context F using transformation f.

  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  17. def toString(): String
    Definition Classes
    AnyRef → Any
  18. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  19. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  20. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from DeferredSink[F, A]

Inherited from DeferredSource[F, A]

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped