|
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 |
|
|
|
|
TMVars
|
|
data TMVar a |
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.
|
|
|
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 System.IO.Unsafe.unsafePerformIO, because using
atomically inside System.IO.Unsafe.unsafePerformIO isn't
possible.
|
|
newEmptyTMVarIO :: IO (TMVar a) |
IO version of newEmptyTMVar. This is useful for creating top-level
TMVars using System.IO.Unsafe.unsafePerformIO, because using
atomically inside System.IO.Unsafe.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 2.3.0 |