stm-io-hooks-0.5.4: An STM monad with IO hooksSource codeContentsIndex
Control.Concurrent.AdvSTM.TMVar
Portabilitynon-portable (requires STM)
Stabilityexperimental
MaintainerPeter Robinson <robinson@ecs.tuwien.ac.at>
Contents
TVars
Description

TMVar: Transactional MVars, for use in the AdvAdvSTM monad

Corresponds to Control.Concurrent.STM.TMVar

Synopsis
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
data TMVar a Source
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 System.IO.Unsafe.unsafePerformIO, because using atomically inside System.IO.Unsafe.unsafePerformIO isn't possible.
newEmptyTMVarIO :: IO (TMVar a)Source
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 :: MonadAdvSTM m => TMVar a -> m aSource
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 :: MonadAdvSTM m => TMVar a -> a -> m ()Source
Put a value into a TMVar. If the TMVar is currently full, putTMVar will retry.
readTMVar :: MonadAdvSTM m => TMVar a -> m aSource
This is a combination of takeTMVar and putTMVar; ie. it takes the value from the TMVar, puts it back, and also returns it.
swapTMVar :: MonadAdvSTM m => TMVar a -> a -> m aSource
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 Just a if the TMVar was full with contents a. After tryTakeTMVar, the TMVar is left empty.
tryPutTMVar :: MonadAdvSTM m => TMVar a -> a -> m BoolSource
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 :: MonadAdvSTM m => TMVar a -> m BoolSource

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.4.2