| Portability | non-portable (concurrency) | 
|---|---|
| Stability | experimental | 
| Maintainer | libraries@haskell.org | 
Control.Concurrent.SampleVar
Contents
Description
Sample variables
- data SampleVar a
 - newEmptySampleVar :: IO (SampleVar a)
 - newSampleVar :: a -> IO (SampleVar a)
 - emptySampleVar :: SampleVar a -> IO ()
 - readSampleVar :: SampleVar a -> IO a
 - writeSampleVar :: SampleVar a -> a -> IO ()
 - isEmptySampleVar :: SampleVar a -> IO Bool
 
Sample Variables
Sample variables are slightly different from a normal MVar:
-  Reading an empty 
SampleVarcauses the reader to block. (same astakeMVaron emptyMVar) -  Reading a filled 
SampleVarempties it and returns value. (same astakeMVar) -  Writing to an empty 
SampleVarfills it with a value, and potentially, wakes up a blocked reader (same as forputMVaron emptyMVar). -  Writing to a filled 
SampleVaroverwrites the current value. (different fromputMVaron fullMVar.) 
newEmptySampleVar :: IO (SampleVar a)Source
Build a new, empty, SampleVar
newSampleVar :: a -> IO (SampleVar a)Source
Build a SampleVar with an initial value.
emptySampleVar :: SampleVar a -> IO ()Source
If the SampleVar is full, leave it empty. Otherwise, do nothing.
readSampleVar :: SampleVar a -> IO aSource
Wait for a value to become available, then take it and return.
writeSampleVar :: SampleVar a -> a -> IO ()Source
Write a value into the SampleVar, overwriting any previous value that
 was there.
isEmptySampleVar :: SampleVar a -> IO BoolSource
Returns True if the SampleVar is currently empty.
Note that this function is only useful if you know that no other
 threads can be modifying the state of the SampleVar, because
 otherwise the state of the SampleVar may have changed by the time
 you see the result of isEmptySampleVar.