|
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
(GHC only)
|
|
Synopsis |
|
|
|
|
TVars
|
|
|
A TMVar is a synchronising variable, used
for communication between concurrent threads. It can be thought of
as a box, which may be empty or full.
|
|
|
|
Create a TMVar which contains the supplied value.
|
|
|
Create a TMVar which is initially empty.
|
|
|
IO version of newTMVar. This is useful for creating top-level
TMVars using unsafePerformIO, because using
atomically inside unsafePerformIO isn't
possible.
|
|
|
IO version of newEmptyTMVar. This is useful for creating top-level
TMVars using unsafePerformIO, because using
atomically inside unsafePerformIO isn't
possible.
|
|
|
Return the contents of the TMVar. If the TMVar is currently
empty, the transaction will retry. After a takeTMVar,
the TMVar is left empty.
|
|
|
Put a value into a TMVar. If the TMVar is currently full,
putTMVar will retry.
|
|
|
This is a combination of takeTMVar and putTMVar; ie. it takes the value
from the TMVar, puts it back, and also returns it.
|
|
|
Swap the contents of a TMVar for a new value.
|
|
|
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.
|
|
|
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.
|
|
|
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.9 |