| Copyright | (c) Peter Robinson 2009, (c) The University of Glasgow 2004 |
|---|---|
| License | BSD3 |
| Maintainer | Peter Robinson <[email protected]> |
| Stability | experimental |
| Portability | non-portable (requires STM) |
| Safe Haskell | None |
| Language | Haskell98 |
Control.Concurrent.AdvSTM.TMVar
Contents
Description
TMVar: Transactional MVars, for use in the AdvAdvSTM monad
Corresponds to Control.Concurrent.STM.TMVar
- data TMVar a
- newTMVar :: MonadAdvSTM m => a -> m (TMVar a)
- newEmptyTMVar :: MonadAdvSTM m => m (TMVar a)
- newTMVarIO :: a -> IO (TMVar a)
- newEmptyTMVarIO :: IO (TMVar a)
- takeTMVar :: MonadAdvSTM m => TMVar a -> m a
- putTMVar :: MonadAdvSTM m => TMVar a -> a -> m ()
- readTMVar :: MonadAdvSTM m => TMVar a -> m a
- swapTMVar :: MonadAdvSTM m => TMVar a -> a -> m a
- tryTakeTMVar :: MonadAdvSTM m => TMVar a -> m (Maybe a)
- tryPutTMVar :: MonadAdvSTM m => TMVar a -> a -> m Bool
- isEmptyTMVar :: MonadAdvSTM m => TMVar a -> m Bool
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.
newTMVar :: MonadAdvSTM m => a -> m (TMVar a) Source
Create a TMVar which contains the supplied value.
newEmptyTMVar :: MonadAdvSTM m => m (TMVar a) Source
Create a TMVar which is initially empty.
newTMVarIO :: a -> IO (TMVar a) Source
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) Source
IO version of newEmptyTMVar. This is useful for creating top-level
TMVars using unsafePerformIO, because using
atomically inside unsafePerformIO isn't
possible.
takeTMVar :: MonadAdvSTM m => TMVar a -> m a Source
putTMVar :: MonadAdvSTM m => TMVar a -> a -> m () Source
readTMVar :: MonadAdvSTM m => TMVar a -> m a Source
swapTMVar :: MonadAdvSTM m => TMVar a -> a -> m a Source
Swap the contents of a TMVar for a new value.
tryTakeTMVar :: MonadAdvSTM m => TMVar a -> m (Maybe a) Source
A version of takeTMVar that does not retry. The tryTakeTMVar
function returns Nothing if the TMVar was empty, or if
the Just aTMVar was full with contents a. After tryTakeTMVar, the
TMVar is left empty.
tryPutTMVar :: MonadAdvSTM m => TMVar a -> a -> m Bool Source
isEmptyTMVar :: MonadAdvSTM m => TMVar a -> m Bool Source
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.