ivar-simple-0.2: Write once concurrency primitives.
Data.IVar.Simple
Description
IVars are write-once variables.
IVar
Similarily to MVars, IVars can be either empty or filled. Once filled, they keep their value indefinitely - they are immutable.
MVar
Reading from an empty IVar will block until the IVar is filled. Because the value read will never change, this is a pure computation.
Synopsis
data IVar a Source
A write-once (immutable) Variable
new :: IO (IVar a)Source
Creates 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 there is no value yet.
tryRead :: IVar a -> IO (Maybe a)Source
Try to read an IVar. Returns Nothing if there is not value yet.
Nothing
write :: IVar a -> a -> IO ()Source
Writes a value to an IVar. Raises a NonTermination exception if it fails.
NonTermination
tryWrite :: IVar a -> a -> IO BoolSource
Writes a value to an IVar. Returns True if successful.
True