| 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 | Haskell98 |
Control.Concurrent.STM.TMVar
Contents
Description
TMVar: Transactional MVars, for use in the STM monad (GHC only)
- 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) 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.
tryReadTMVar :: TMVar a -> STM (Maybe a) Source
A version of readTMVar which does not retry. Instead it returns Nothing if no value is available.
tryTakeTMVar :: TMVar a -> STM (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 :: TMVar a -> a -> STM Bool Source