dejafu-0.3.1.0: Overloadable primitives for testable, potentially non-deterministic, concurrency.

Safe HaskellNone
LanguageHaskell2010

Control.Concurrent.Classy.STM.TMVar

Contents

Description

Transactional MVars, for use with MonadSTM.

Deviations: TMVar as defined here does not have an Eq instance, this is because the MonadSTM TVar type does not have an Eq constraint. Furthermore, the newTMVarIO, newEmptyTMVarIO, and mkWeakTMVar functions are not provided.

Synopsis

TMVars

data TMVar stm a Source

A TMVar is like an MVar or a mVar, but using transactional memory. As transactions are atomic, this makes dealing with multiple TMVars easier than wrangling multiple mVars.

newTMVar :: MonadSTM stm => a -> stm (TMVar stm a) Source

Create a TMVar containing the given value.

newTMVarN :: MonadSTM stm => String -> a -> stm (TMVar stm a) Source

Create a TMVar containing the given value, with the given name.

Name conflicts are handled as usual for TVars. The name is prefixed with "ctmvar-".

newEmptyTMVar :: MonadSTM stm => stm (TMVar stm a) Source

Create a new empty TMVar.

newEmptyTMVarN :: MonadSTM stm => String -> stm (TMVar stm a) Source

Create a new empty TMVar with the given name.

Name conflicts are handled as usual for TVars. The name is prefixed with "ctmvar-".

takeTMVar :: MonadSTM stm => TMVar stm a -> stm a Source

Take the contents of a TMVar, or retry if it is empty.

putTMVar :: MonadSTM stm => TMVar stm a -> a -> stm () Source

Write to a TMVar, or retry if it is full.

readTMVar :: MonadSTM stm => TMVar stm a -> stm a Source

Read from a TMVar without emptying, or retry if it is empty.

tryTakeTMVar :: MonadSTM stm => TMVar stm a -> stm (Maybe a) Source

Try to take the contents of a TMVar, returning Nothing if it is empty.

tryPutTMVar :: MonadSTM stm => TMVar stm a -> a -> stm Bool Source

Try to write to a TMVar, returning False if it is full.

tryReadTMVar :: MonadSTM stm => TMVar stm a -> stm (Maybe a) Source

Try to read from a TMVar without emptying, returning Nothing if it is empty.

isEmptyTMVar :: MonadSTM stm => TMVar stm a -> stm Bool Source

Check if a TMVar is empty or not.

swapTMVar :: MonadSTM stm => TMVar stm a -> a -> stm a Source

Swap the contents of a TMVar returning the old contents, or retry if it is empty.