Deferred
A purely functional synchronization primitive which represents a single value
which may not yet be available.
which may not yet be available.
When created, a
and never be made empty again.
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
, and notify any andall readers currently blocked on a call to
get
.complete(a)
on a Deferred
that has already been completed will not modifyits content, and result in a failed
F
.Albeit simple,
complex concurrent behaviour and data structures like queues and semaphores.
Deferred
can be used in conjunction with Ref to buildcomplex 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.
blocked by the implementation.
- Companion
- object
Value members
Methods
Obtains the value of the
The returned value may be canceled.
Deferred
, or waits until it has been completed.The returned value may be canceled.