|
| Control.Concurrent.STM.TMVar | | Portability | non-portable (requires STM) | | Stability | experimental | | Maintainer | libraries@haskell.org |
|
|
|
|
|
| Description |
| TMVar: Transactional MVars, for use in the STM monad
|
|
| Synopsis |
|
|
|
|
| TVars
|
|
| data TMVar a |
| A TMVar is a synchronising variable, used
for communication between concurrent threads. It can be thought of
as a a box, which may be empty or full.
|
|
|
| newTMVar :: a -> STM (TMVar a) |
| Create a TMVar which contains the supplied value.
|
|
| newEmptyTMVar :: STM (TMVar a) |
| Create a TMVar which is initially empty.
|
|
| newTMVarIO :: a -> IO (TMVar a) |
| IO version of newTMVar. This is useful for creating top-level
TMVars using unsafePerformIO, because using
atomically inside unsafePerformIO isn't
possible.
|
|
| newEmptyTMVarIO :: IO (TMVar a) |
| IO version of newEmptyTMVar. This is useful for creating top-level
TMVars using unsafePerformIO, because using
atomically inside unsafePerformIO isn't
possible.
|
|
| takeTMVar :: TMVar a -> STM a |
| Return the contents of the TMVar. If the TMVar is currently
empty, the transaction will retry. After a takeTMVar,
the TMVar is left empty.
|
|
| putTMVar :: TMVar a -> a -> STM () |
| Put a value into a TMVar. If the TMVar is currently full,
putTMVar will retry.
|
|
| readTMVar :: TMVar a -> STM a |
| This is a combination of takeTMVar and putTMVar; ie. it takes the value
from the TMVar, puts it back, and also returns it.
|
|
| swapTMVar :: TMVar a -> a -> STM a |
| Swap the contents of a TMVar for a new value.
|
|
| tryTakeTMVar :: TMVar a -> STM (Maybe a) |
| A version of takeTMVar that does not retry. The tryTakeTMVar
function returns Nothing if the TMVar was empty, or Just a if
the TMVar was full with contents a. After tryTakeTMVar, the
TMVar is left empty.
|
|
| tryPutTMVar :: TMVar a -> a -> STM Bool |
| A version of putTMVar that does not retry. The tryPutTMVar
function attempts to put the value a into the TMVar, returning
True if it was successful, or False otherwise.
|
|
| isEmptyTMVar :: TMVar a -> STM Bool |
Check whether a given TMVar is empty.
Notice that the boolean value returned is just a snapshot of
the state of the TMVar. By the time you get to react on its result,
the TMVar may have been filled (or emptied) - so be extremely
careful when using this operation. Use tryTakeTMVar instead if possible.
|
|
| Produced by Haddock version 0.8 |