| 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
- writeTMVar :: TMVar a -> a -> STM ()
- 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.
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.
writeTMVar :: TMVar a -> a -> STM () Source #
Non-blocking write of a new value to a TMVar Puts if empty. Replaces if populated.
Since: 2.5.1
tryReadTMVar :: TMVar a -> STM (Maybe a) Source #
A version of readTMVar which does not retry. Instead it returns Nothing if no value is available.
Since: 2.3
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.