Stability | experimental |
---|---|
Maintainer | Bas van Dijk <v.dijk.bas@gmail.com> |
This is a wrapped version of Control.Concurrent.MVar
with types generalized
from IO
to all monads in either MonadBase
or MonadBaseControl
.
- data MVar a
- newEmptyMVar :: MonadBase IO m => m (MVar α)
- newMVar :: MonadBase IO m => α -> m (MVar α)
- takeMVar :: MonadBase IO m => MVar α -> m α
- putMVar :: MonadBase IO m => MVar α -> α -> m ()
- readMVar :: MonadBase IO m => MVar α -> m α
- swapMVar :: MonadBase IO m => MVar α -> α -> m α
- tryTakeMVar :: MonadBase IO m => MVar α -> m (Maybe α)
- tryPutMVar :: MonadBase IO m => MVar α -> α -> m Bool
- isEmptyMVar :: MonadBase IO m => MVar α -> m Bool
- withMVar :: MonadBaseControl IO m => MVar α -> (α -> m β) -> m β
- modifyMVar_ :: (MonadBaseControl IO m, MonadBase IO m) => MVar α -> (α -> m α) -> m ()
- modifyMVar :: (MonadBaseControl IO m, MonadBase IO m) => MVar α -> (α -> m (α, β)) -> m β
- addMVarFinalizer :: MonadBaseControl IO m => MVar α -> m () -> m ()
Documentation
data MVar a
An MVar
(pronounced "em-var") is a synchronising variable, used
for communication between concurrent threads. It can be thought of
as a a box, which may be empty or full.
newEmptyMVar :: MonadBase IO m => m (MVar α)Source
Generalized version of newEmptyMVar
.
tryTakeMVar :: MonadBase IO m => MVar α -> m (Maybe α)Source
Generalized version of tryTakeMVar
.
tryPutMVar :: MonadBase IO m => MVar α -> α -> m BoolSource
Generalized version of tryPutMVar
.
isEmptyMVar :: MonadBase IO m => MVar α -> m BoolSource
Generalized version of isEmptyMVar
.
withMVar :: MonadBaseControl IO m => MVar α -> (α -> m β) -> m βSource
Generalized version of withMVar
.
modifyMVar_ :: (MonadBaseControl IO m, MonadBase IO m) => MVar α -> (α -> m α) -> m ()Source
Generalized version of modifyMVar_
.
modifyMVar :: (MonadBaseControl IO m, MonadBase IO m) => MVar α -> (α -> m (α, β)) -> m βSource
Generalized version of modifyMVar
.
addMVarFinalizer :: MonadBaseControl IO m => MVar α -> m () -> m ()Source
Generalized version of addMVarFinalizer
.
Note any monadic side effects in m
of the "finalizer" computation are
discarded.