| Copyright | (c) The University of Glasgow 2004 | 
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) | 
| Maintainer | libraries@haskell.org | 
| Stability | experimental | 
| Portability | non-portable (requires STM) | 
| Safe Haskell | Trustworthy | 
| Language | Haskell2010 | 
Control.Concurrent.STM.TMVar
Contents
Description
(GHC only)
Synopsis
- data TMVar a
- newTMVar :: a -> STM (TMVar a)
- newEmptyTMVar :: STM (TMVar a)
- newTMVarIO :: a -> IO (TMVar a)
- newEmptyTMVarIO :: IO (TMVar a)
- takeTMVar :: TMVar a -> STM a
- putTMVar :: TMVar a -> a -> STM ()
- readTMVar :: TMVar a -> STM a
- tryReadTMVar :: TMVar a -> STM (Maybe a)
- swapTMVar :: TMVar a -> a -> STM a
- tryTakeTMVar :: TMVar a -> STM (Maybe a)
- tryPutTMVar :: TMVar a -> a -> STM Bool
- isEmptyTMVar :: TMVar a -> STM Bool
- mkWeakTMVar :: TMVar a -> IO () -> IO (Weak (TMVar a))
TMVars
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.
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 unsafePerformIO, because using
 atomically inside unsafePerformIO isn't
 possible.
newEmptyTMVarIO :: IO (TMVar a) #
IO version of newEmptyTMVar.  This is useful for creating top-level
 TMVars using unsafePerformIO, because using
 atomically inside unsafePerformIO isn't
 possible.
tryReadTMVar :: TMVar a -> STM (Maybe a) #
A version of readTMVar which does not retry. Instead it
 returns Nothing if no value is available.
Since: stm-2.3
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 aTMVar was full with contents a.  After tryTakeTMVar, the
 TMVar is left empty.
tryPutTMVar :: TMVar a -> a -> STM Bool #