ivar-simple-0.3: Write once concurrency primitives.
IVars are write-once variables.
Similarily to MVars, IVars can be either empty or filled. Once filled,
they keep their value indefinitely - they are immutable.
Reading from an empty IVar will block until the IVar is filled. Because
the value read will never change, this is a pure computation.
data IVar a Source
A write-once (immutable) Variable
new :: IO (IVar a)Source
Create a new, empty IVar.
newFull :: a -> IO (IVar a)Source
Create a new filled IVar.
This is slightly cheaper than creating a new IVar and then writing to it.
read :: IVar a -> aSource
Returns the value of an IVar.
The evaluation will block until a value is written to the IVar if it
has no value yet.
tryRead :: IVar a -> IO (Maybe a)Source
Try to read an IVar. Returns Nothing if it has no value yet.
write :: IVar a -> a -> IO ()Source
Writes a value to an IVar. Raises a BlockedIndefinitelyOnIVar
exception if the variable already has a value.
tryWrite :: IVar a -> a -> IO BoolSource
Writes a value to an IVar. Returns True if successful, and
data BlockedIndefinitelyOnIVar Source
The thread has attempted to write to a full IVar.
Produced by Haddock version 2.10.0