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 |
(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.
newTMVarIO :: a -> IO ( TMVar a) Source #
IO
version of
newTMVar
. This is useful for creating top-level
TMVar
s 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
TMVar
s 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.
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
a
TMVar
was full with contents
a
. After
tryTakeTMVar
, the
TMVar
is left empty.